home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / docs / protocol / std / std13.txt < prev    next >
Text File  |  1997-09-26  |  249KB  |  6,157 lines

  1. Network Working Group                                     P. Mockapetris
  2. Request for Comments: 1034                                           ISI
  3. Obsoletes: RFCs 882, 883, 973                              November 1987
  4.  
  5.  
  6.                  DOMAIN NAMES - CONCEPTS AND FACILITIES
  7.  
  8.  
  9.  
  10. 1. STATUS OF THIS MEMO
  11.  
  12. This RFC is an introduction to the Domain Name System (DNS), and omits
  13. many details which can be found in a companion RFC, "Domain Names -
  14. Implementation and Specification" [RFC-1035].  That RFC assumes that the
  15. reader is familiar with the concepts discussed in this memo.
  16.  
  17. A subset of DNS functions and data types constitute an official
  18. protocol.  The official protocol includes standard queries and their
  19. responses and most of the Internet class data formats (e.g., host
  20. addresses).
  21.  
  22. However, the domain system is intentionally extensible.  Researchers are
  23. continuously proposing, implementing and experimenting with new data
  24. types, query types, classes, functions, etc.  Thus while the components
  25. of the official protocol are expected to stay essentially unchanged and
  26. operate as a production service, experimental behavior should always be
  27. expected in extensions beyond the official protocol.  Experimental or
  28. obsolete features are clearly marked in these RFCs, and such information
  29. should be used with caution.
  30.  
  31. The reader is especially cautioned not to depend on the values which
  32. appear in examples to be current or complete, since their purpose is
  33. primarily pedagogical.  Distribution of this memo is unlimited.
  34.  
  35. 2. INTRODUCTION
  36.  
  37. This RFC introduces domain style names, their use for Internet mail and
  38. host address support, and the protocols and servers used to implement
  39. domain name facilities.
  40.  
  41. 2.1. The history of domain names
  42.  
  43. The impetus for the development of the domain system was growth in the
  44. Internet:
  45.  
  46.    - Host name to address mappings were maintained by the Network
  47.      Information Center (NIC) in a single file (HOSTS.TXT) which
  48.      was FTPed by all hosts [RFC-952, RFC-953].  The total network
  49.  
  50.  
  51.  
  52. Mockapetris                                                     [Page 1]
  53.  
  54. RFC 1034             Domain Concepts and Facilities        November 1987
  55.  
  56.  
  57.      bandwidth consumed in distributing a new version by this
  58.      scheme is proportional to the square of the number of hosts in
  59.      the network, and even when multiple levels of FTP are used,
  60.      the outgoing FTP load on the NIC host is considerable.
  61.      Explosive growth in the number of hosts didn't bode well for
  62.      the future.
  63.  
  64.    - The network population was also changing in character.  The
  65.      timeshared hosts that made up the original ARPANET were being
  66.      replaced with local networks of workstations.  Local
  67.      organizations were administering their own names and
  68.      addresses, but had to wait for the NIC to change HOSTS.TXT to
  69.      make changes visible to the Internet at large.  Organizations
  70.      also wanted some local structure on the name space.
  71.  
  72.    - The applications on the Internet were getting more
  73.      sophisticated and creating a need for general purpose name
  74.      service.
  75.  
  76.  
  77. The result was several ideas about name spaces and their management
  78. [IEN-116, RFC-799, RFC-819, RFC-830].  The proposals varied, but a
  79. common thread was the idea of a hierarchical name space, with the
  80. hierarchy roughly corresponding to organizational structure, and names
  81. using "."  as the character to mark the boundary between hierarchy
  82. levels.  A design using a distributed database and generalized resources
  83. was described in [RFC-882, RFC-883].  Based on experience with several
  84. implementations, the system evolved into the scheme described in this
  85. memo.
  86.  
  87. The terms "domain" or "domain name" are used in many contexts beyond the
  88. DNS described here.  Very often, the term domain name is used to refer
  89. to a name with structure indicated by dots, but no relation to the DNS.
  90. This is particularly true in mail addressing [Quarterman 86].
  91.  
  92. 2.2. DNS design goals
  93.  
  94. The design goals of the DNS influence its structure.  They are:
  95.  
  96.    - The primary goal is a consistent name space which will be used
  97.      for referring to resources.  In order to avoid the problems
  98.      caused by ad hoc encodings, names should not be required to
  99.      contain network identifiers, addresses, routes, or similar
  100.      information as part of the name.
  101.  
  102.    - The sheer size of the database and frequency of updates
  103.      suggest that it must be maintained in a distributed manner,
  104.      with local caching to improve performance.  Approaches that
  105.  
  106.  
  107.  
  108. Mockapetris                                                     [Page 2]
  109.  
  110. RFC 1034             Domain Concepts and Facilities        November 1987
  111.  
  112.  
  113.      attempt to collect a consistent copy of the entire database
  114.      will become more and more expensive and difficult, and hence
  115.      should be avoided.  The same principle holds for the structure
  116.      of the name space, and in particular mechanisms for creating
  117.      and deleting names; these should also be distributed.
  118.  
  119.    - Where there tradeoffs between the cost of acquiring data, the
  120.      speed of updates, and the accuracy of caches, the source of
  121.      the data should control the tradeoff.
  122.  
  123.    - The costs of implementing such a facility dictate that it be
  124.      generally useful, and not restricted to a single application.
  125.      We should be able to use names to retrieve host addresses,
  126.      mailbox data, and other as yet undetermined information.  All
  127.      data associated with a name is tagged with a type, and queries
  128.      can be limited to a single type.
  129.  
  130.    - Because we want the name space to be useful in dissimilar
  131.      networks and applications, we provide the ability to use the
  132.      same name space with different protocol families or
  133.      management.  For example, host address formats differ between
  134.      protocols, though all protocols have the notion of address.
  135.      The DNS tags all data with a class as well as the type, so
  136.      that we can allow parallel use of different formats for data
  137.      of type address.
  138.  
  139.    - We want name server transactions to be independent of the
  140.      communications system that carries them.  Some systems may
  141.      wish to use datagrams for queries and responses, and only
  142.      establish virtual circuits for transactions that need the
  143.      reliability (e.g., database updates, long transactions); other
  144.      systems will use virtual circuits exclusively.
  145.  
  146.    - The system should be useful across a wide spectrum of host
  147.      capabilities.  Both personal computers and large timeshared
  148.      hosts should be able to use the system, though perhaps in
  149.      different ways.
  150.  
  151. 2.3. Assumptions about usage
  152.  
  153. The organization of the domain system derives from some assumptions
  154. about the needs and usage patterns of its user community and is designed
  155. to avoid many of the the complicated problems found in general purpose
  156. database systems.
  157.  
  158. The assumptions are:
  159.  
  160.    - The size of the total database will initially be proportional
  161.  
  162.  
  163.  
  164. Mockapetris                                                     [Page 3]
  165.  
  166. RFC 1034             Domain Concepts and Facilities        November 1987
  167.  
  168.  
  169.      to the number of hosts using the system, but will eventually
  170.      grow to be proportional to the number of users on those hosts
  171.      as mailboxes and other information are added to the domain
  172.      system.
  173.  
  174.    - Most of the data in the system will change very slowly (e.g.,
  175.      mailbox bindings, host addresses), but that the system should
  176.      be able to deal with subsets that change more rapidly (on the
  177.      order of seconds or minutes).
  178.  
  179.    - The administrative boundaries used to distribute
  180.      responsibility for the database will usually correspond to
  181.      organizations that have one or more hosts.  Each organization
  182.      that has responsibility for a particular set of domains will
  183.      provide redundant name servers, either on the organization's
  184.      own hosts or other hosts that the organization arranges to
  185.      use.
  186.  
  187.    - Clients of the domain system should be able to identify
  188.      trusted name servers they prefer to use before accepting
  189.      referrals to name servers outside of this "trusted" set.
  190.  
  191.    - Access to information is more critical than instantaneous
  192.      updates or guarantees of consistency.  Hence the update
  193.      process allows updates to percolate out through the users of
  194.      the domain system rather than guaranteeing that all copies are
  195.      simultaneously updated.  When updates are unavailable due to
  196.      network or host failure, the usual course is to believe old
  197.      information while continuing efforts to update it.  The
  198.      general model is that copies are distributed with timeouts for
  199.      refreshing.  The distributor sets the timeout value and the
  200.      recipient of the distribution is responsible for performing
  201.      the refresh.  In special situations, very short intervals can
  202.      be specified, or the owner can prohibit copies.
  203.  
  204.    - In any system that has a distributed database, a particular
  205.      name server may be presented with a query that can only be
  206.      answered by some other server.  The two general approaches to
  207.      dealing with this problem are "recursive", in which the first
  208.      server pursues the query for the client at another server, and
  209.      "iterative", in which the server refers the client to another
  210.      server and lets the client pursue the query.  Both approaches
  211.      have advantages and disadvantages, but the iterative approach
  212.      is preferred for the datagram style of access.  The domain
  213.      system requires implementation of the iterative approach, but
  214.      allows the recursive approach as an option.
  215.  
  216.  
  217.  
  218.  
  219.  
  220. Mockapetris                                                     [Page 4]
  221.  
  222. RFC 1034             Domain Concepts and Facilities        November 1987
  223.  
  224.  
  225. The domain system assumes that all data originates in master files
  226. scattered through the hosts that use the domain system.  These master
  227. files are updated by local system administrators.  Master files are text
  228. files that are read by a local name server, and hence become available
  229. through the name servers to users of the domain system.  The user
  230. programs access name servers through standard programs called resolvers.
  231.  
  232. The standard format of master files allows them to be exchanged between
  233. hosts (via FTP, mail, or some other mechanism); this facility is useful
  234. when an organization wants a domain, but doesn't want to support a name
  235. server.  The organization can maintain the master files locally using a
  236. text editor, transfer them to a foreign host which runs a name server,
  237. and then arrange with the system administrator of the name server to get
  238. the files loaded.
  239.  
  240. Each host's name servers and resolvers are configured by a local system
  241. administrator [RFC-1033].  For a name server, this configuration data
  242. includes the identity of local master files and instructions on which
  243. non-local master files are to be loaded from foreign servers.  The name
  244. server uses the master files or copies to load its zones.  For
  245. resolvers, the configuration data identifies the name servers which
  246. should be the primary sources of information.
  247.  
  248. The domain system defines procedures for accessing the data and for
  249. referrals to other name servers.  The domain system also defines
  250. procedures for caching retrieved data and for periodic refreshing of
  251. data defined by the system administrator.
  252.  
  253. The system administrators provide:
  254.  
  255.    - The definition of zone boundaries.
  256.  
  257.    - Master files of data.
  258.  
  259.    - Updates to master files.
  260.  
  261.    - Statements of the refresh policies desired.
  262.  
  263. The domain system provides:
  264.  
  265.    - Standard formats for resource data.
  266.  
  267.    - Standard methods for querying the database.
  268.  
  269.    - Standard methods for name servers to refresh local data from
  270.      foreign name servers.
  271.  
  272.  
  273.  
  274.  
  275.  
  276. Mockapetris                                                     [Page 5]
  277.  
  278. RFC 1034             Domain Concepts and Facilities        November 1987
  279.  
  280.  
  281. 2.4. Elements of the DNS
  282.  
  283. The DNS has three major components:
  284.  
  285.    - The DOMAIN NAME SPACE and RESOURCE RECORDS, which are
  286.      specifications for a tree structured name space and data
  287.      associated with the names.  Conceptually, each node and leaf
  288.      of the domain name space tree names a set of information, and
  289.      query operations are attempts to extract specific types of
  290.      information from a particular set.  A query names the domain
  291.      name of interest and describes the type of resource
  292.      information that is desired.  For example, the Internet
  293.      uses some of its domain names to identify hosts; queries for
  294.      address resources return Internet host addresses.
  295.  
  296.    - NAME SERVERS are server programs which hold information about
  297.      the domain tree's structure and set information.  A name
  298.      server may cache structure or set information about any part
  299.      of the domain tree, but in general a particular name server
  300.      has complete information about a subset of the domain space,
  301.      and pointers to other name servers that can be used to lead to
  302.      information from any part of the domain tree.  Name servers
  303.      know the parts of the domain tree for which they have complete
  304.      information; a name server is said to be an AUTHORITY for
  305.      these parts of the name space.  Authoritative information is
  306.      organized into units called ZONEs, and these zones can be
  307.      automatically distributed to the name servers which provide
  308.      redundant service for the data in a zone.
  309.  
  310.    - RESOLVERS are programs that extract information from name
  311.      servers in response to client requests.  Resolvers must be
  312.      able to access at least one name server and use that name
  313.      server's information to answer a query directly, or pursue the
  314.      query using referrals to other name servers.  A resolver will
  315.      typically be a system routine that is directly accessible to
  316.      user programs; hence no protocol is necessary between the
  317.      resolver and the user program.
  318.  
  319. These three components roughly correspond to the three layers or views
  320. of the domain system:
  321.  
  322.    - From the user's point of view, the domain system is accessed
  323.      through a simple procedure or OS call to a local resolver.
  324.      The domain space consists of a single tree and the user can
  325.      request information from any section of the tree.
  326.  
  327.    - From the resolver's point of view, the domain system is
  328.      composed of an unknown number of name servers.  Each name
  329.  
  330.  
  331.  
  332. Mockapetris                                                     [Page 6]
  333.  
  334. RFC 1034             Domain Concepts and Facilities        November 1987
  335.  
  336.  
  337.      server has one or more pieces of the whole domain tree's data,
  338.      but the resolver views each of these databases as essentially
  339.      static.
  340.  
  341.    - From a name server's point of view, the domain system consists
  342.      of separate sets of local information called zones.  The name
  343.      server has local copies of some of the zones.  The name server
  344.      must periodically refresh its zones from master copies in
  345.      local files or foreign name servers.  The name server must
  346.      concurrently process queries that arrive from resolvers.
  347.  
  348. In the interests of performance, implementations may couple these
  349. functions.  For example, a resolver on the same machine as a name server
  350. might share a database consisting of the the zones managed by the name
  351. server and the cache managed by the resolver.
  352.  
  353. 3. DOMAIN NAME SPACE and RESOURCE RECORDS
  354.  
  355. 3.1. Name space specifications and terminology
  356.  
  357. The domain name space is a tree structure.  Each node and leaf on the
  358. tree corresponds to a resource set (which may be empty).  The domain
  359. system makes no distinctions between the uses of the interior nodes and
  360. leaves, and this memo uses the term "node" to refer to both.
  361.  
  362. Each node has a label, which is zero to 63 octets in length.  Brother
  363. nodes may not have the same label, although the same label can be used
  364. for nodes which are not brothers.  One label is reserved, and that is
  365. the null (i.e., zero length) label used for the root.
  366.  
  367. The domain name of a node is the list of the labels on the path from the
  368. node to the root of the tree.  By convention, the labels that compose a
  369. domain name are printed or read left to right, from the most specific
  370. (lowest, farthest from the root) to the least specific (highest, closest
  371. to the root).
  372.  
  373. Internally, programs that manipulate domain names should represent them
  374. as sequences of labels, where each label is a length octet followed by
  375. an octet string.  Because all domain names end at the root, which has a
  376. null string for a label, these internal representations can use a length
  377. byte of zero to terminate a domain name.
  378.  
  379. By convention, domain names can be stored with arbitrary case, but
  380. domain name comparisons for all present domain functions are done in a
  381. case-insensitive manner, assuming an ASCII character set, and a high
  382. order zero bit.  This means that you are free to create a node with
  383. label "A" or a node with label "a", but not both as brothers; you could
  384. refer to either using "a" or "A".  When you receive a domain name or
  385.  
  386.  
  387.  
  388. Mockapetris                                                     [Page 7]
  389.  
  390. RFC 1034             Domain Concepts and Facilities        November 1987
  391.  
  392.  
  393. label, you should preserve its case.  The rationale for this choice is
  394. that we may someday need to add full binary domain names for new
  395. services; existing services would not be changed.
  396.  
  397. When a user needs to type a domain name, the length of each label is
  398. omitted and the labels are separated by dots (".").  Since a complete
  399. domain name ends with the root label, this leads to a printed form which
  400. ends in a dot.  We use this property to distinguish between:
  401.  
  402.    - a character string which represents a complete domain name
  403.      (often called "absolute").  For example, "poneria.ISI.EDU."
  404.  
  405.    - a character string that represents the starting labels of a
  406.      domain name which is incomplete, and should be completed by
  407.      local software using knowledge of the local domain (often
  408.      called "relative").  For example, "poneria" used in the
  409.      ISI.EDU domain.
  410.  
  411. Relative names are either taken relative to a well known origin, or to a
  412. list of domains used as a search list.  Relative names appear mostly at
  413. the user interface, where their interpretation varies from
  414. implementation to implementation, and in master files, where they are
  415. relative to a single origin domain name.  The most common interpretation
  416. uses the root "." as either the single origin or as one of the members
  417. of the search list, so a multi-label relative name is often one where
  418. the trailing dot has been omitted to save typing.
  419.  
  420. To simplify implementations, the total number of octets that represent a
  421. domain name (i.e., the sum of all label octets and label lengths) is
  422. limited to 255.
  423.  
  424. A domain is identified by a domain name, and consists of that part of
  425. the domain name space that is at or below the domain name which
  426. specifies the domain.  A domain is a subdomain of another domain if it
  427. is contained within that domain.  This relationship can be tested by
  428. seeing if the subdomain's name ends with the containing domain's name.
  429. For example, A.B.C.D is a subdomain of B.C.D, C.D, D, and " ".
  430.  
  431. 3.2. Administrative guidelines on use
  432.  
  433. As a matter of policy, the DNS technical specifications do not mandate a
  434. particular tree structure or rules for selecting labels; its goal is to
  435. be as general as possible, so that it can be used to build arbitrary
  436. applications.  In particular, the system was designed so that the name
  437. space did not have to be organized along the lines of network
  438. boundaries, name servers, etc.  The rationale for this is not that the
  439. name space should have no implied semantics, but rather that the choice
  440. of implied semantics should be left open to be used for the problem at
  441.  
  442.  
  443.  
  444. Mockapetris                                                     [Page 8]
  445.  
  446. RFC 1034             Domain Concepts and Facilities        November 1987
  447.  
  448.  
  449. hand, and that different parts of the tree can have different implied
  450. semantics.  For example, the IN-ADDR.ARPA domain is organized and
  451. distributed by network and host address because its role is to translate
  452. from network or host numbers to names; NetBIOS domains [RFC-1001, RFC-
  453. 1002] are flat because that is appropriate for that application.
  454.  
  455. However, there are some guidelines that apply to the "normal" parts of
  456. the name space used for hosts, mailboxes, etc., that will make the name
  457. space more uniform, provide for growth, and minimize problems as
  458. software is converted from the older host table.  The political
  459. decisions about the top levels of the tree originated in RFC-920.
  460. Current policy for the top levels is discussed in [RFC-1032].  MILNET
  461. conversion issues are covered in [RFC-1031].
  462.  
  463. Lower domains which will eventually be broken into multiple zones should
  464. provide branching at the top of the domain so that the eventual
  465. decomposition can be done without renaming.  Node labels which use
  466. special characters, leading digits, etc., are likely to break older
  467. software which depends on more restrictive choices.
  468.  
  469. 3.3. Technical guidelines on use
  470.  
  471. Before the DNS can be used to hold naming information for some kind of
  472. object, two needs must be met:
  473.  
  474.    - A convention for mapping between object names and domain
  475.      names.  This describes how information about an object is
  476.      accessed.
  477.  
  478.    - RR types and data formats for describing the object.
  479.  
  480. These rules can be quite simple or fairly complex.  Very often, the
  481. designer must take into account existing formats and plan for upward
  482. compatibility for existing usage.  Multiple mappings or levels of
  483. mapping may be required.
  484.  
  485. For hosts, the mapping depends on the existing syntax for host names
  486. which is a subset of the usual text representation for domain names,
  487. together with RR formats for describing host addresses, etc.  Because we
  488. need a reliable inverse mapping from address to host name, a special
  489. mapping for addresses into the IN-ADDR.ARPA domain is also defined.
  490.  
  491. For mailboxes, the mapping is slightly more complex.  The usual mail
  492. address <local-part>@<mail-domain> is mapped into a domain name by
  493. converting <local-part> into a single label (regardles of dots it
  494. contains), converting <mail-domain> into a domain name using the usual
  495. text format for domain names (dots denote label breaks), and
  496. concatenating the two to form a single domain name.  Thus the mailbox
  497.  
  498.  
  499.  
  500. Mockapetris                                                     [Page 9]
  501.  
  502. RFC 1034             Domain Concepts and Facilities        November 1987
  503.  
  504.  
  505. HOSTMASTER@SRI-NIC.ARPA is represented as a domain name by
  506. HOSTMASTER.SRI-NIC.ARPA.  An appreciation for the reasons behind this
  507. design also must take into account the scheme for mail exchanges [RFC-
  508. 974].
  509.  
  510. The typical user is not concerned with defining these rules, but should
  511. understand that they usually are the result of numerous compromises
  512. between desires for upward compatibility with old usage, interactions
  513. between different object definitions, and the inevitable urge to add new
  514. features when defining the rules.  The way the DNS is used to support
  515. some object is often more crucial than the restrictions inherent in the
  516. DNS.
  517.  
  518. 3.4. Example name space
  519.  
  520. The following figure shows a part of the current domain name space, and
  521. is used in many examples in this RFC.  Note that the tree is a very
  522. small subset of the actual name space.
  523.  
  524.                                    |
  525.                                    |
  526.              +---------------------+------------------+
  527.              |                     |                  |
  528.             MIL                   EDU                ARPA
  529.              |                     |                  |
  530.              |                     |                  |
  531.        +-----+-----+               |     +------+-----+-----+
  532.        |     |     |               |     |      |           |
  533.       BRL  NOSC  DARPA             |  IN-ADDR  SRI-NIC     ACC
  534.                                    |
  535.        +--------+------------------+---------------+--------+
  536.        |        |                  |               |        |
  537.       UCI      MIT                 |              UDEL     YALE
  538.                 |                 ISI
  539.                 |                  |
  540.             +---+---+              |
  541.             |       |              |
  542.            LCS  ACHILLES  +--+-----+-----+--------+
  543.             |             |  |     |     |        |
  544.             XX            A  C   VAXA  VENERA Mockapetris
  545.  
  546. In this example, the root domain has three immediate subdomains: MIL,
  547. EDU, and ARPA.  The LCS.MIT.EDU domain has one immediate subdomain named
  548. XX.LCS.MIT.EDU.  All of the leaves are also domains.
  549.  
  550. 3.5. Preferred name syntax
  551.  
  552. The DNS specifications attempt to be as general as possible in the rules
  553.  
  554.  
  555.  
  556. Mockapetris                                                    [Page 10]
  557.  
  558. RFC 1034             Domain Concepts and Facilities        November 1987
  559.  
  560.  
  561. for constructing domain names.  The idea is that the name of any
  562. existing object can be expressed as a domain name with minimal changes.
  563. However, when assigning a domain name for an object, the prudent user
  564. will select a name which satisfies both the rules of the domain system
  565. and any existing rules for the object, whether these rules are published
  566. or implied by existing programs.
  567.  
  568. For example, when naming a mail domain, the user should satisfy both the
  569. rules of this memo and those in RFC-822.  When creating a new host name,
  570. the old rules for HOSTS.TXT should be followed.  This avoids problems
  571. when old software is converted to use domain names.
  572.  
  573. The following syntax will result in fewer problems with many
  574. applications that use domain names (e.g., mail, TELNET).
  575.  
  576. <domain> ::= <subdomain> | " "
  577.  
  578. <subdomain> ::= <label> | <subdomain> "." <label>
  579.  
  580. <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
  581.  
  582. <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
  583.  
  584. <let-dig-hyp> ::= <let-dig> | "-"
  585.  
  586. <let-dig> ::= <letter> | <digit>
  587.  
  588. <letter> ::= any one of the 52 alphabetic characters A through Z in
  589. upper case and a through z in lower case
  590.  
  591. <digit> ::= any one of the ten digits 0 through 9
  592.  
  593. Note that while upper and lower case letters are allowed in domain
  594. names, no significance is attached to the case.  That is, two names with
  595. the same spelling but different case are to be treated as if identical.
  596.  
  597. The labels must follow the rules for ARPANET host names.  They must
  598. start with a letter, end with a letter or digit, and have as interior
  599. characters only letters, digits, and hyphen.  There are also some
  600. restrictions on the length.  Labels must be 63 characters or less.
  601.  
  602. For example, the following strings identify hosts in the Internet:
  603.  
  604. A.ISI.EDU  XX.LCS.MIT.EDU  SRI-NIC.ARPA
  605.  
  606. 3.6. Resource Records
  607.  
  608. A domain name identifies a node.  Each node has a set of resource
  609.  
  610.  
  611.  
  612. Mockapetris                                                    [Page 11]
  613.  
  614. RFC 1034             Domain Concepts and Facilities        November 1987
  615.  
  616.  
  617. information, which may be empty.  The set of resource information
  618. associated with a particular name is composed of separate resource
  619. records (RRs).  The order of RRs in a set is not significant, and need
  620. not be preserved by name servers, resolvers, or other parts of the DNS.
  621.  
  622. When we talk about a specific RR, we assume it has the following:
  623.  
  624. owner           which is the domain name where the RR is found.
  625.  
  626. type            which is an encoded 16 bit value that specifies the type
  627.                 of the resource in this resource record.  Types refer to
  628.                 abstract resources.
  629.  
  630.                 This memo uses the following types:
  631.  
  632.                 A               a host address
  633.  
  634.                 CNAME           identifies the canonical name of an
  635.                                 alias
  636.  
  637.                 HINFO           identifies the CPU and OS used by a host
  638.  
  639.                 MX              identifies a mail exchange for the
  640.                                 domain.  See [RFC-974 for details.
  641.  
  642.                 NS
  643.                 the authoritative name server for the domain
  644.  
  645.                 PTR
  646.                 a pointer to another part of the domain name space
  647.  
  648.                 SOA
  649.                 identifies the start of a zone of authority]
  650.  
  651. class           which is an encoded 16 bit value which identifies a
  652.                 protocol family or instance of a protocol.
  653.  
  654.                 This memo uses the following classes:
  655.  
  656.                 IN              the Internet system
  657.  
  658.                 CH              the Chaos system
  659.  
  660. TTL             which is the time to live of the RR.  This field is a 32
  661.                 bit integer in units of seconds, an is primarily used by
  662.                 resolvers when they cache RRs.  The TTL describes how
  663.                 long a RR can be cached before it should be discarded.
  664.  
  665.  
  666.  
  667.  
  668. Mockapetris                                                    [Page 12]
  669.  
  670. RFC 1034             Domain Concepts and Facilities        November 1987
  671.  
  672.  
  673. RDATA           which is the type and sometimes class dependent data
  674.                 which describes the resource:
  675.  
  676.                 A               For the IN class, a 32 bit IP address
  677.  
  678.                                 For the CH class, a domain name followed
  679.                                 by a 16 bit octal Chaos address.
  680.  
  681.                 CNAME           a domain name.
  682.  
  683.                 MX              a 16 bit preference value (lower is
  684.                                 better) followed by a host name willing
  685.                                 to act as a mail exchange for the owner
  686.                                 domain.
  687.  
  688.                 NS              a host name.
  689.  
  690.                 PTR             a domain name.
  691.  
  692.                 SOA             several fields.
  693.  
  694. The owner name is often implicit, rather than forming an integral part
  695. of the RR.  For example, many name servers internally form tree or hash
  696. structures for the name space, and chain RRs off nodes.  The remaining
  697. RR parts are the fixed header (type, class, TTL) which is consistent for
  698. all RRs, and a variable part (RDATA) that fits the needs of the resource
  699. being described.
  700.  
  701. The meaning of the TTL field is a time limit on how long an RR can be
  702. kept in a cache.  This limit does not apply to authoritative data in
  703. zones; it is also timed out, but by the refreshing policies for the
  704. zone.  The TTL is assigned by the administrator for the zone where the
  705. data originates.  While short TTLs can be used to minimize caching, and
  706. a zero TTL prohibits caching, the realities of Internet performance
  707. suggest that these times should be on the order of days for the typical
  708. host.  If a change can be anticipated, the TTL can be reduced prior to
  709. the change to minimize inconsistency during the change, and then
  710. increased back to its former value following the change.
  711.  
  712. The data in the RDATA section of RRs is carried as a combination of
  713. binary strings and domain names.  The domain names are frequently used
  714. as "pointers" to other data in the DNS.
  715.  
  716. 3.6.1. Textual expression of RRs
  717.  
  718. RRs are represented in binary form in the packets of the DNS protocol,
  719. and are usually represented in highly encoded form when stored in a name
  720. server or resolver.  In this memo, we adopt a style similar to that used
  721.  
  722.  
  723.  
  724. Mockapetris                                                    [Page 13]
  725.  
  726. RFC 1034             Domain Concepts and Facilities        November 1987
  727.  
  728.  
  729. in master files in order to show the contents of RRs.  In this format,
  730. most RRs are shown on a single line, although continuation lines are
  731. possible using parentheses.
  732.  
  733. The start of the line gives the owner of the RR.  If a line begins with
  734. a blank, then the owner is assumed to be the same as that of the
  735. previous RR.  Blank lines are often included for readability.
  736.  
  737. Following the owner, we list the TTL, type, and class of the RR.  Class
  738. and type use the mnemonics defined above, and TTL is an integer before
  739. the type field.  In order to avoid ambiguity in parsing, type and class
  740. mnemonics are disjoint, TTLs are integers, and the type mnemonic is
  741. always last. The IN class and TTL values are often omitted from examples
  742. in the interests of clarity.
  743.  
  744. The resource data or RDATA section of the RR are given using knowledge
  745. of the typical representation for the data.
  746.  
  747. For example, we might show the RRs carried in a message as:
  748.  
  749.     ISI.EDU.        MX      10 VENERA.ISI.EDU.
  750.                     MX      10 VAXA.ISI.EDU.
  751.     VENERA.ISI.EDU. A       128.9.0.32
  752.                     A       10.1.0.52
  753.     VAXA.ISI.EDU.   A       10.2.0.27
  754.                     A       128.9.0.33
  755.  
  756. The MX RRs have an RDATA section which consists of a 16 bit number
  757. followed by a domain name.  The address RRs use a standard IP address
  758. format to contain a 32 bit internet address.
  759.  
  760. This example shows six RRs, with two RRs at each of three domain names.
  761.  
  762. Similarly we might see:
  763.  
  764.     XX.LCS.MIT.EDU. IN      A       10.0.0.44
  765.                     CH      A       MIT.EDU. 2420
  766.  
  767. This example shows two addresses for XX.LCS.MIT.EDU, each of a different
  768. class.
  769.  
  770. 3.6.2. Aliases and canonical names
  771.  
  772. In existing systems, hosts and other resources often have several names
  773. that identify the same resource.  For example, the names C.ISI.EDU and
  774. USC-ISIC.ARPA both identify the same host.  Similarly, in the case of
  775. mailboxes, many organizations provide many names that actually go to the
  776. same mailbox; for example Mockapetris@C.ISI.EDU, Mockapetris@B.ISI.EDU,
  777.  
  778.  
  779.  
  780. Mockapetris                                                    [Page 14]
  781.  
  782. RFC 1034             Domain Concepts and Facilities        November 1987
  783.  
  784.  
  785. and PVM@ISI.EDU all go to the same mailbox (although the mechanism
  786. behind this is somewhat complicated).
  787.  
  788. Most of these systems have a notion that one of the equivalent set of
  789. names is the canonical or primary name and all others are aliases.
  790.  
  791. The domain system provides such a feature using the canonical name
  792. (CNAME) RR.  A CNAME RR identifies its owner name as an alias, and
  793. specifies the corresponding canonical name in the RDATA section of the
  794. RR.  If a CNAME RR is present at a node, no other data should be
  795. present; this ensures that the data for a canonical name and its aliases
  796. cannot be different.  This rule also insures that a cached CNAME can be
  797. used without checking with an authoritative server for other RR types.
  798.  
  799. CNAME RRs cause special action in DNS software.  When a name server
  800. fails to find a desired RR in the resource set associated with the
  801. domain name, it checks to see if the resource set consists of a CNAME
  802. record with a matching class.  If so, the name server includes the CNAME
  803. record in the response and restarts the query at the domain name
  804. specified in the data field of the CNAME record.  The one exception to
  805. this rule is that queries which match the CNAME type are not restarted.
  806.  
  807. For example, suppose a name server was processing a query with for USC-
  808. ISIC.ARPA, asking for type A information, and had the following resource
  809. records:
  810.  
  811.     USC-ISIC.ARPA   IN      CNAME   C.ISI.EDU
  812.  
  813.     C.ISI.EDU       IN      A       10.0.0.52
  814.  
  815. Both of these RRs would be returned in the response to the type A query,
  816. while a type CNAME or * query should return just the CNAME.
  817.  
  818. Domain names in RRs which point at another name should always point at
  819. the primary name and not the alias.  This avoids extra indirections in
  820. accessing information.  For example, the address to name RR for the
  821. above host should be:
  822.  
  823.     52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU
  824.  
  825. rather than pointing at USC-ISIC.ARPA.  Of course, by the robustness
  826. principle, domain software should not fail when presented with CNAME
  827. chains or loops; CNAME chains should be followed and CNAME loops
  828. signalled as an error.
  829.  
  830. 3.7. Queries
  831.  
  832. Queries are messages which may be sent to a name server to provoke a
  833.  
  834.  
  835.  
  836. Mockapetris                                                    [Page 15]
  837.  
  838. RFC 1034             Domain Concepts and Facilities        November 1987
  839.  
  840.  
  841. response.  In the Internet, queries are carried in UDP datagrams or over
  842. TCP connections.  The response by the name server either answers the
  843. question posed in the query, refers the requester to another set of name
  844. servers, or signals some error condition.
  845.  
  846. In general, the user does not generate queries directly, but instead
  847. makes a request to a resolver which in turn sends one or more queries to
  848. name servers and deals with the error conditions and referrals that may
  849. result.  Of course, the possible questions which can be asked in a query
  850. does shape the kind of service a resolver can provide.
  851.  
  852. DNS queries and responses are carried in a standard message format.  The
  853. message format has a header containing a number of fixed fields which
  854. are always present, and four sections which carry query parameters and
  855. RRs.
  856.  
  857. The most important field in the header is a four bit field called an
  858. opcode which separates different queries.  Of the possible 16 values,
  859. one (standard query) is part of the official protocol, two (inverse
  860. query and status query) are options, one (completion) is obsolete, and
  861. the rest are unassigned.
  862.  
  863. The four sections are:
  864.  
  865. Question        Carries the query name and other query parameters.
  866.  
  867. Answer          Carries RRs which directly answer the query.
  868.  
  869. Authority       Carries RRs which describe other authoritative servers.
  870.                 May optionally carry the SOA RR for the authoritative
  871.                 data in the answer section.
  872.  
  873. Additional      Carries RRs which may be helpful in using the RRs in the
  874.                 other sections.
  875.  
  876. Note that the content, but not the format, of these sections varies with
  877. header opcode.
  878.  
  879. 3.7.1. Standard queries
  880.  
  881. A standard query specifies a target domain name (QNAME), query type
  882. (QTYPE), and query class (QCLASS) and asks for RRs which match.  This
  883. type of query makes up such a vast majority of DNS queries that we use
  884. the term "query" to mean standard query unless otherwise specified.  The
  885. QTYPE and QCLASS fields are each 16 bits long, and are a superset of
  886. defined types and classes.
  887.  
  888.  
  889.  
  890.  
  891.  
  892. Mockapetris                                                    [Page 16]
  893.  
  894. RFC 1034             Domain Concepts and Facilities        November 1987
  895.  
  896.  
  897. The QTYPE field may contain:
  898.  
  899. <any type>      matches just that type. (e.g., A, PTR).
  900.  
  901. AXFR            special zone transfer QTYPE.
  902.  
  903. MAILB           matches all mail box related RRs (e.g. MB and MG).
  904.  
  905. *               matches all RR types.
  906.  
  907. The QCLASS field may contain:
  908.  
  909. <any class>     matches just that class (e.g., IN, CH).
  910.  
  911. *               matches aLL RR classes.
  912.  
  913. Using the query domain name, QTYPE, and QCLASS, the name server looks
  914. for matching RRs.  In addition to relevant records, the name server may
  915. return RRs that point toward a name server that has the desired
  916. information or RRs that are expected to be useful in interpreting the
  917. relevant RRs.  For example, a name server that doesn't have the
  918. requested information may know a name server that does; a name server
  919. that returns a domain name in a relevant RR may also return the RR that
  920. binds that domain name to an address.
  921.  
  922. For example, a mailer tying to send mail to Mockapetris@ISI.EDU might
  923. ask the resolver for mail information about ISI.EDU, resulting in a
  924. query for QNAME=ISI.EDU, QTYPE=MX, QCLASS=IN.  The response's answer
  925. section would be:
  926.  
  927.     ISI.EDU.        MX      10 VENERA.ISI.EDU.
  928.                     MX      10 VAXA.ISI.EDU.
  929.  
  930. while the additional section might be:
  931.  
  932.     VAXA.ISI.EDU.   A       10.2.0.27
  933.                     A       128.9.0.33
  934.     VENERA.ISI.EDU. A       10.1.0.52
  935.                     A       128.9.0.32
  936.  
  937. Because the server assumes that if the requester wants mail exchange
  938. information, it will probably want the addresses of the mail exchanges
  939. soon afterward.
  940.  
  941. Note that the QCLASS=* construct requires special interpretation
  942. regarding authority.  Since a particular name server may not know all of
  943. the classes available in the domain system, it can never know if it is
  944. authoritative for all classes.  Hence responses to QCLASS=* queries can
  945.  
  946.  
  947.  
  948. Mockapetris                                                    [Page 17]
  949.  
  950. RFC 1034             Domain Concepts and Facilities        November 1987
  951.  
  952.  
  953. never be authoritative.
  954.  
  955. 3.7.2. Inverse queries (Optional)
  956.  
  957. Name servers may also support inverse queries that map a particular
  958. resource to a domain name or domain names that have that resource.  For
  959. example, while a standard query might map a domain name to a SOA RR, the
  960. corresponding inverse query might map the SOA RR back to the domain
  961. name.
  962.  
  963. Implementation of this service is optional in a name server, but all
  964. name servers must at least be able to understand an inverse query
  965. message and return a not-implemented error response.
  966.  
  967. The domain system cannot guarantee the completeness or uniqueness of
  968. inverse queries because the domain system is organized by domain name
  969. rather than by host address or any other resource type.  Inverse queries
  970. are primarily useful for debugging and database maintenance activities.
  971.  
  972. Inverse queries may not return the proper TTL, and do not indicate cases
  973. where the identified RR is one of a set (for example, one address for a
  974. host having multiple addresses).  Therefore, the RRs returned in inverse
  975. queries should never be cached.
  976.  
  977. Inverse queries are NOT an acceptable method for mapping host addresses
  978. to host names; use the IN-ADDR.ARPA domain instead.
  979.  
  980. A detailed discussion of inverse queries is contained in [RFC-1035].
  981.  
  982. 3.8. Status queries (Experimental)
  983.  
  984. To be defined.
  985.  
  986. 3.9. Completion queries (Obsolete)
  987.  
  988. The optional completion services described in RFCs 882 and 883 have been
  989. deleted.  Redesigned services may become available in the future, or the
  990. opcodes may be reclaimed for other use.
  991.  
  992. 4. NAME SERVERS
  993.  
  994. 4.1. Introduction
  995.  
  996. Name servers are the repositories of information that make up the domain
  997. database.  The database is divided up into sections called zones, which
  998. are distributed among the name servers.  While name servers can have
  999. several optional functions and sources of data, the essential task of a
  1000. name server is to answer queries using data in its zones.  By design,
  1001.  
  1002.  
  1003.  
  1004. Mockapetris                                                    [Page 18]
  1005.  
  1006. RFC 1034             Domain Concepts and Facilities        November 1987
  1007.  
  1008.  
  1009. name servers can answer queries in a simple manner; the response can
  1010. always be generated using only local data, and either contains the
  1011. answer to the question or a referral to other name servers "closer" to
  1012. the desired information.
  1013.  
  1014. A given zone will be available from several name servers to insure its
  1015. availability in spite of host or communication link failure.  By
  1016. administrative fiat, we require every zone to be available on at least
  1017. two servers, and many zones have more redundancy than that.
  1018.  
  1019. A given name server will typically support one or more zones, but this
  1020. gives it authoritative information about only a small section of the
  1021. domain tree.  It may also have some cached non-authoritative data about
  1022. other parts of the tree.  The name server marks its responses to queries
  1023. so that the requester can tell whether the response comes from
  1024. authoritative data or not.
  1025.  
  1026. 4.2. How the database is divided into zones
  1027.  
  1028. The domain database is partitioned in two ways: by class, and by "cuts"
  1029. made in the name space between nodes.
  1030.  
  1031. The class partition is simple.  The database for any class is organized,
  1032. delegated, and maintained separately from all other classes.  Since, by
  1033. convention, the name spaces are the same for all classes, the separate
  1034. classes can be thought of as an array of parallel namespace trees.  Note
  1035. that the data attached to nodes will be different for these different
  1036. parallel classes.  The most common reasons for creating a new class are
  1037. the necessity for a new data format for existing types or a desire for a
  1038. separately managed version of the existing name space.
  1039.  
  1040. Within a class, "cuts" in the name space can be made between any two
  1041. adjacent nodes.  After all cuts are made, each group of connected name
  1042. space is a separate zone.  The zone is said to be authoritative for all
  1043. names in the connected region.  Note that the "cuts" in the name space
  1044. may be in different places for different classes, the name servers may
  1045. be different, etc.
  1046.  
  1047. These rules mean that every zone has at least one node, and hence domain
  1048. name, for which it is authoritative, and all of the nodes in a
  1049. particular zone are connected.  Given, the tree structure, every zone
  1050. has a highest node which is closer to the root than any other node in
  1051. the zone.  The name of this node is often used to identify the zone.
  1052.  
  1053. It would be possible, though not particularly useful, to partition the
  1054. name space so that each domain name was in a separate zone or so that
  1055. all nodes were in a single zone.  Instead, the database is partitioned
  1056. at points where a particular organization wants to take over control of
  1057.  
  1058.  
  1059.  
  1060. Mockapetris                                                    [Page 19]
  1061.  
  1062. RFC 1034             Domain Concepts and Facilities        November 1987
  1063.  
  1064.  
  1065. a subtree.  Once an organization controls its own zone it can
  1066. unilaterally change the data in the zone, grow new tree sections
  1067. connected to the zone, delete existing nodes, or delegate new subzones
  1068. under its zone.
  1069.  
  1070. If the organization has substructure, it may want to make further
  1071. internal partitions to achieve nested delegations of name space control.
  1072. In some cases, such divisions are made purely to make database
  1073. maintenance more convenient.
  1074.  
  1075. 4.2.1. Technical considerations
  1076.  
  1077. The data that describes a zone has four major parts:
  1078.  
  1079.    - Authoritative data for all nodes within the zone.
  1080.  
  1081.    - Data that defines the top node of the zone (can be thought of
  1082.      as part of the authoritative data).
  1083.  
  1084.    - Data that describes delegated subzones, i.e., cuts around the
  1085.      bottom of the zone.
  1086.  
  1087.    - Data that allows access to name servers for subzones
  1088.      (sometimes called "glue" data).
  1089.  
  1090. All of this data is expressed in the form of RRs, so a zone can be
  1091. completely described in terms of a set of RRs.  Whole zones can be
  1092. transferred between name servers by transferring the RRs, either carried
  1093. in a series of messages or by FTPing a master file which is a textual
  1094. representation.
  1095.  
  1096. The authoritative data for a zone is simply all of the RRs attached to
  1097. all of the nodes from the top node of the zone down to leaf nodes or
  1098. nodes above cuts around the bottom edge of the zone.
  1099.  
  1100. Though logically part of the authoritative data, the RRs that describe
  1101. the top node of the zone are especially important to the zone's
  1102. management.  These RRs are of two types: name server RRs that list, one
  1103. per RR, all of the servers for the zone, and a single SOA RR that
  1104. describes zone management parameters.
  1105.  
  1106. The RRs that describe cuts around the bottom of the zone are NS RRs that
  1107. name the servers for the subzones.  Since the cuts are between nodes,
  1108. these RRs are NOT part of the authoritative data of the zone, and should
  1109. be exactly the same as the corresponding RRs in the top node of the
  1110. subzone.  Since name servers are always associated with zone boundaries,
  1111. NS RRs are only found at nodes which are the top node of some zone.  In
  1112. the data that makes up a zone, NS RRs are found at the top node of the
  1113.  
  1114.  
  1115.  
  1116. Mockapetris                                                    [Page 20]
  1117.  
  1118. RFC 1034             Domain Concepts and Facilities        November 1987
  1119.  
  1120.  
  1121. zone (and are authoritative) and at cuts around the bottom of the zone
  1122. (where they are not authoritative), but never in between.
  1123.  
  1124. One of the goals of the zone structure is that any zone have all the
  1125. data required to set up communications with the name servers for any
  1126. subzones.  That is, parent zones have all the information needed to
  1127. access servers for their children zones.  The NS RRs that name the
  1128. servers for subzones are often not enough for this task since they name
  1129. the servers, but do not give their addresses.  In particular, if the
  1130. name of the name server is itself in the subzone, we could be faced with
  1131. the situation where the NS RRs tell us that in order to learn a name
  1132. server's address, we should contact the server using the address we wish
  1133. to learn.  To fix this problem, a zone contains "glue" RRs which are not
  1134. part of the authoritative data, and are address RRs for the servers.
  1135. These RRs are only necessary if the name server's name is "below" the
  1136. cut, and are only used as part of a referral response.
  1137.  
  1138. 4.2.2. Administrative considerations
  1139.  
  1140. When some organization wants to control its own domain, the first step
  1141. is to identify the proper parent zone, and get the parent zone's owners
  1142. to agree to the delegation of control.  While there are no particular
  1143. technical constraints dealing with where in the tree this can be done,
  1144. there are some administrative groupings discussed in [RFC-1032] which
  1145. deal with top level organization, and middle level zones are free to
  1146. create their own rules.  For example, one university might choose to use
  1147. a single zone, while another might choose to organize by subzones
  1148. dedicated to individual departments or schools.  [RFC-1033] catalogs
  1149. available DNS software an discusses administration procedures.
  1150.  
  1151. Once the proper name for the new subzone is selected, the new owners
  1152. should be required to demonstrate redundant name server support.  Note
  1153. that there is no requirement that the servers for a zone reside in a
  1154. host which has a name in that domain.  In many cases, a zone will be
  1155. more accessible to the internet at large if its servers are widely
  1156. distributed rather than being within the physical facilities controlled
  1157. by the same organization that manages the zone.  For example, in the
  1158. current DNS, one of the name servers for the United Kingdom, or UK
  1159. domain, is found in the US.  This allows US hosts to get UK data without
  1160. using limited transatlantic bandwidth.
  1161.  
  1162. As the last installation step, the delegation NS RRs and glue RRs
  1163. necessary to make the delegation effective should be added to the parent
  1164. zone.  The administrators of both zones should insure that the NS and
  1165. glue RRs which mark both sides of the cut are consistent and remain so.
  1166.  
  1167. 4.3. Name server internals
  1168.  
  1169.  
  1170.  
  1171.  
  1172. Mockapetris                                                    [Page 21]
  1173.  
  1174. RFC 1034             Domain Concepts and Facilities        November 1987
  1175.  
  1176.  
  1177. 4.3.1. Queries and responses
  1178.  
  1179. The principal activity of name servers is to answer standard queries.
  1180. Both the query and its response are carried in a standard message format
  1181. which is described in [RFC-1035].  The query contains a QTYPE, QCLASS,
  1182. and QNAME, which describe the types and classes of desired information
  1183. and the name of interest.
  1184.  
  1185. The way that the name server answers the query depends upon whether it
  1186. is operating in recursive mode or not:
  1187.  
  1188.    - The simplest mode for the server is non-recursive, since it
  1189.      can answer queries using only local information: the response
  1190.      contains an error, the answer, or a referral to some other
  1191.      server "closer" to the answer.  All name servers must
  1192.      implement non-recursive queries.
  1193.  
  1194.    - The simplest mode for the client is recursive, since in this
  1195.      mode the name server acts in the role of a resolver and
  1196.      returns either an error or the answer, but never referrals.
  1197.      This service is optional in a name server, and the name server
  1198.      may also choose to restrict the clients which can use
  1199.      recursive mode.
  1200.  
  1201. Recursive service is helpful in several situations:
  1202.  
  1203.    - a relatively simple requester that lacks the ability to use
  1204.      anything other than a direct answer to the question.
  1205.  
  1206.    - a request that needs to cross protocol or other boundaries and
  1207.      can be sent to a server which can act as intermediary.
  1208.  
  1209.    - a network where we want to concentrate the cache rather than
  1210.      having a separate cache for each client.
  1211.  
  1212. Non-recursive service is appropriate if the requester is capable of
  1213. pursuing referrals and interested in information which will aid future
  1214. requests.
  1215.  
  1216. The use of recursive mode is limited to cases where both the client and
  1217. the name server agree to its use.  The agreement is negotiated through
  1218. the use of two bits in query and response messages:
  1219.  
  1220.    - The recursion available, or RA bit, is set or cleared by a
  1221.      name server in all responses.  The bit is true if the name
  1222.      server is willing to provide recursive service for the client,
  1223.      regardless of whether the client requested recursive service.
  1224.      That is, RA signals availability rather than use.
  1225.  
  1226.  
  1227.  
  1228. Mockapetris                                                    [Page 22]
  1229.  
  1230. RFC 1034             Domain Concepts and Facilities        November 1987
  1231.  
  1232.  
  1233.    - Queries contain a bit called recursion desired or RD.  This
  1234.      bit specifies specifies whether the requester wants recursive
  1235.      service for this query.  Clients may request recursive service
  1236.      from any name server, though they should depend upon receiving
  1237.      it only from servers which have previously sent an RA, or
  1238.      servers which have agreed to provide service through private
  1239.      agreement or some other means outside of the DNS protocol.
  1240.  
  1241. The recursive mode occurs when a query with RD set arrives at a server
  1242. which is willing to provide recursive service; the client can verify
  1243. that recursive mode was used by checking that both RA and RD are set in
  1244. the reply.  Note that the name server should never perform recursive
  1245. service unless asked via RD, since this interferes with trouble shooting
  1246. of name servers and their databases.
  1247.  
  1248. If recursive service is requested and available, the recursive response
  1249. to a query will be one of the following:
  1250.  
  1251.    - The answer to the query, possibly preface by one or more CNAME
  1252.      RRs that specify aliases encountered on the way to an answer.
  1253.  
  1254.    - A name error indicating that the name does not exist.  This
  1255.      may include CNAME RRs that indicate that the original query
  1256.      name was an alias for a name which does not exist.
  1257.  
  1258.    - A temporary error indication.
  1259.  
  1260. If recursive service is not requested or is not available, the non-
  1261. recursive response will be one of the following:
  1262.  
  1263.    - An authoritative name error indicating that the name does not
  1264.      exist.
  1265.  
  1266.    - A temporary error indication.
  1267.  
  1268.    - Some combination of:
  1269.  
  1270.      RRs that answer the question, together with an indication
  1271.      whether the data comes from a zone or is cached.
  1272.  
  1273.      A referral to name servers which have zones which are closer
  1274.      ancestors to the name than the server sending the reply.
  1275.  
  1276.    - RRs that the name server thinks will prove useful to the
  1277.      requester.
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284. Mockapetris                                                    [Page 23]
  1285.  
  1286. RFC 1034             Domain Concepts and Facilities        November 1987
  1287.  
  1288.  
  1289. 4.3.2. Algorithm
  1290.  
  1291. The actual algorithm used by the name server will depend on the local OS
  1292. and data structures used to store RRs.  The following algorithm assumes
  1293. that the RRs are organized in several tree structures, one for each
  1294. zone, and another for the cache:
  1295.  
  1296.    1. Set or clear the value of recursion available in the response
  1297.       depending on whether the name server is willing to provide
  1298.       recursive service.  If recursive service is available and
  1299.       requested via the RD bit in the query, go to step 5,
  1300.       otherwise step 2.
  1301.  
  1302.    2. Search the available zones for the zone which is the nearest
  1303.       ancestor to QNAME.  If such a zone is found, go to step 3,
  1304.       otherwise step 4.
  1305.  
  1306.    3. Start matching down, label by label, in the zone.  The
  1307.       matching process can terminate several ways:
  1308.  
  1309.          a. If the whole of QNAME is matched, we have found the
  1310.             node.
  1311.  
  1312.             If the data at the node is a CNAME, and QTYPE doesn't
  1313.             match CNAME, copy the CNAME RR into the answer section
  1314.             of the response, change QNAME to the canonical name in
  1315.             the CNAME RR, and go back to step 1.
  1316.  
  1317.             Otherwise, copy all RRs which match QTYPE into the
  1318.             answer section and go to step 6.
  1319.  
  1320.          b. If a match would take us out of the authoritative data,
  1321.             we have a referral.  This happens when we encounter a
  1322.             node with NS RRs marking cuts along the bottom of a
  1323.             zone.
  1324.  
  1325.             Copy the NS RRs for the subzone into the authority
  1326.             section of the reply.  Put whatever addresses are
  1327.             available into the additional section, using glue RRs
  1328.             if the addresses are not available from authoritative
  1329.             data or the cache.  Go to step 4.
  1330.  
  1331.          c. If at some label, a match is impossible (i.e., the
  1332.             corresponding label does not exist), look to see if a
  1333.             the "*" label exists.
  1334.  
  1335.             If the "*" label does not exist, check whether the name
  1336.             we are looking for is the original QNAME in the query
  1337.  
  1338.  
  1339.  
  1340. Mockapetris                                                    [Page 24]
  1341.  
  1342. RFC 1034             Domain Concepts and Facilities        November 1987
  1343.  
  1344.  
  1345.             or a name we have followed due to a CNAME.  If the name
  1346.             is original, set an authoritative name error in the
  1347.             response and exit.  Otherwise just exit.
  1348.  
  1349.             If the "*" label does exist, match RRs at that node
  1350.             against QTYPE.  If any match, copy them into the answer
  1351.             section, but set the owner of the RR to be QNAME, and
  1352.             not the node with the "*" label.  Go to step 6.
  1353.  
  1354.    4. Start matching down in the cache.  If QNAME is found in the
  1355.       cache, copy all RRs attached to it that match QTYPE into the
  1356.       answer section.  If there was no delegation from
  1357.       authoritative data, look for the best one from the cache, and
  1358.       put it in the authority section.  Go to step 6.
  1359.  
  1360.    5. Using the local resolver or a copy of its algorithm (see
  1361.       resolver section of this memo) to answer the query.  Store
  1362.       the results, including any intermediate CNAMEs, in the answer
  1363.       section of the response.
  1364.  
  1365.    6. Using local data only, attempt to add other RRs which may be
  1366.       useful to the additional section of the query.  Exit.
  1367.  
  1368. 4.3.3. Wildcards
  1369.  
  1370. In the previous algorithm, special treatment was given to RRs with owner
  1371. names starting with the label "*".  Such RRs are called wildcards.
  1372. Wildcard RRs can be thought of as instructions for synthesizing RRs.
  1373. When the appropriate conditions are met, the name server creates RRs
  1374. with an owner name equal to the query name and contents taken from the
  1375. wildcard RRs.
  1376.  
  1377. This facility is most often used to create a zone which will be used to
  1378. forward mail from the Internet to some other mail system.  The general
  1379. idea is that any name in that zone which is presented to server in a
  1380. query will be assumed to exist, with certain properties, unless explicit
  1381. evidence exists to the contrary.  Note that the use of the term zone
  1382. here, instead of domain, is intentional; such defaults do not propagate
  1383. across zone boundaries, although a subzone may choose to achieve that
  1384. appearance by setting up similar defaults.
  1385.  
  1386. The contents of the wildcard RRs follows the usual rules and formats for
  1387. RRs.  The wildcards in the zone have an owner name that controls the
  1388. query names they will match.  The owner name of the wildcard RRs is of
  1389. the form "*.<anydomain>", where <anydomain> is any domain name.
  1390. <anydomain> should not contain other * labels, and should be in the
  1391. authoritative data of the zone.  The wildcards potentially apply to
  1392. descendants of <anydomain>, but not to <anydomain> itself.  Another way
  1393.  
  1394.  
  1395.  
  1396. Mockapetris                                                    [Page 25]
  1397.  
  1398. RFC 1034             Domain Concepts and Facilities        November 1987
  1399.  
  1400.  
  1401. to look at this is that the "*" label always matches at least one whole
  1402. label and sometimes more, but always whole labels.
  1403.  
  1404. Wildcard RRs do not apply:
  1405.  
  1406.    - When the query is in another zone.  That is, delegation cancels
  1407.      the wildcard defaults.
  1408.  
  1409.    - When the query name or a name between the wildcard domain and
  1410.      the query name is know to exist.  For example, if a wildcard
  1411.      RR has an owner name of "*.X", and the zone also contains RRs
  1412.      attached to B.X, the wildcards would apply to queries for name
  1413.      Z.X (presuming there is no explicit information for Z.X), but
  1414.      not to B.X, A.B.X, or X.
  1415.  
  1416. A * label appearing in a query name has no special effect, but can be
  1417. used to test for wildcards in an authoritative zone; such a query is the
  1418. only way to get a response containing RRs with an owner name with * in
  1419. it.  The result of such a query should not be cached.
  1420.  
  1421. Note that the contents of the wildcard RRs are not modified when used to
  1422. synthesize RRs.
  1423.  
  1424. To illustrate the use of wildcard RRs, suppose a large company with a
  1425. large, non-IP/TCP, network wanted to create a mail gateway.  If the
  1426. company was called X.COM, and IP/TCP capable gateway machine was called
  1427. A.X.COM, the following RRs might be entered into the COM zone:
  1428.  
  1429.     X.COM           MX      10      A.X.COM
  1430.  
  1431.     *.X.COM         MX      10      A.X.COM
  1432.  
  1433.     A.X.COM         A       1.2.3.4
  1434.     A.X.COM         MX      10      A.X.COM
  1435.  
  1436.     *.A.X.COM       MX      10      A.X.COM
  1437.  
  1438. This would cause any MX query for any domain name ending in X.COM to
  1439. return an MX RR pointing at A.X.COM.  Two wildcard RRs are required
  1440. since the effect of the wildcard at *.X.COM is inhibited in the A.X.COM
  1441. subtree by the explicit data for A.X.COM.  Note also that the explicit
  1442. MX data at X.COM and A.X.COM is required, and that none of the RRs above
  1443. would match a query name of XX.COM.
  1444.  
  1445. 4.3.4. Negative response caching (Optional)
  1446.  
  1447. The DNS provides an optional service which allows name servers to
  1448. distribute, and resolvers to cache, negative results with TTLs.  For
  1449.  
  1450.  
  1451.  
  1452. Mockapetris                                                    [Page 26]
  1453.  
  1454. RFC 1034             Domain Concepts and Facilities        November 1987
  1455.  
  1456.  
  1457. example, a name server can distribute a TTL along with a name error
  1458. indication, and a resolver receiving such information is allowed to
  1459. assume that the name does not exist during the TTL period without
  1460. consulting authoritative data.  Similarly, a resolver can make a query
  1461. with a QTYPE which matches multiple types, and cache the fact that some
  1462. of the types are not present.
  1463.  
  1464. This feature can be particularly important in a system which implements
  1465. naming shorthands that use search lists beacuse a popular shorthand,
  1466. which happens to require a suffix toward the end of the search list,
  1467. will generate multiple name errors whenever it is used.
  1468.  
  1469. The method is that a name server may add an SOA RR to the additional
  1470. section of a response when that response is authoritative.  The SOA must
  1471. be that of the zone which was the source of the authoritative data in
  1472. the answer section, or name error if applicable.  The MINIMUM field of
  1473. the SOA controls the length of time that the negative result may be
  1474. cached.
  1475.  
  1476. Note that in some circumstances, the answer section may contain multiple
  1477. owner names.  In this case, the SOA mechanism should only be used for
  1478. the data which matches QNAME, which is the only authoritative data in
  1479. this section.
  1480.  
  1481. Name servers and resolvers should never attempt to add SOAs to the
  1482. additional section of a non-authoritative response, or attempt to infer
  1483. results which are not directly stated in an authoritative response.
  1484. There are several reasons for this, including: cached information isn't
  1485. usually enough to match up RRs and their zone names, SOA RRs may be
  1486. cached due to direct SOA queries, and name servers are not required to
  1487. output the SOAs in the authority section.
  1488.  
  1489. This feature is optional, although a refined version is expected to
  1490. become part of the standard protocol in the future.  Name servers are
  1491. not required to add the SOA RRs in all authoritative responses, nor are
  1492. resolvers required to cache negative results.  Both are recommended.
  1493. All resolvers and recursive name servers are required to at least be
  1494. able to ignore the SOA RR when it is present in a response.
  1495.  
  1496. Some experiments have also been proposed which will use this feature.
  1497. The idea is that if cached data is known to come from a particular zone,
  1498. and if an authoritative copy of the zone's SOA is obtained, and if the
  1499. zone's SERIAL has not changed since the data was cached, then the TTL of
  1500. the cached data can be reset to the zone MINIMUM value if it is smaller.
  1501. This usage is mentioned for planning purposes only, and is not
  1502. recommended as yet.
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508. Mockapetris                                                    [Page 27]
  1509.  
  1510. RFC 1034             Domain Concepts and Facilities        November 1987
  1511.  
  1512.  
  1513. 4.3.5. Zone maintenance and transfers
  1514.  
  1515. Part of the job of a zone administrator is to maintain the zones at all
  1516. of the name servers which are authoritative for the zone.  When the
  1517. inevitable changes are made, they must be distributed to all of the name
  1518. servers.  While this distribution can be accomplished using FTP or some
  1519. other ad hoc procedure, the preferred method is the zone transfer part
  1520. of the DNS protocol.
  1521.  
  1522. The general model of automatic zone transfer or refreshing is that one
  1523. of the name servers is the master or primary for the zone.  Changes are
  1524. coordinated at the primary, typically by editing a master file for the
  1525. zone.  After editing, the administrator signals the master server to
  1526. load the new zone.  The other non-master or secondary servers for the
  1527. zone periodically check for changes (at a selectable interval) and
  1528. obtain new zone copies when changes have been made.
  1529.  
  1530. To detect changes, secondaries just check the SERIAL field of the SOA
  1531. for the zone.  In addition to whatever other changes are made, the
  1532. SERIAL field in the SOA of the zone is always advanced whenever any
  1533. change is made to the zone.  The advancing can be a simple increment, or
  1534. could be based on the write date and time of the master file, etc.  The
  1535. purpose is to make it possible to determine which of two copies of a
  1536. zone is more recent by comparing serial numbers.  Serial number advances
  1537. and comparisons use sequence space arithmetic, so there is a theoretic
  1538. limit on how fast a zone can be updated, basically that old copies must
  1539. die out before the serial number covers half of its 32 bit range.  In
  1540. practice, the only concern is that the compare operation deals properly
  1541. with comparisons around the boundary between the most positive and most
  1542. negative 32 bit numbers.
  1543.  
  1544. The periodic polling of the secondary servers is controlled by
  1545. parameters in the SOA RR for the zone, which set the minimum acceptable
  1546. polling intervals.  The parameters are called REFRESH, RETRY, and
  1547. EXPIRE.  Whenever a new zone is loaded in a secondary, the secondary
  1548. waits REFRESH seconds before checking with the primary for a new serial.
  1549. If this check cannot be completed, new checks are started every RETRY
  1550. seconds.  The check is a simple query to the primary for the SOA RR of
  1551. the zone.  If the serial field in the secondary's zone copy is equal to
  1552. the serial returned by the primary, then no changes have occurred, and
  1553. the REFRESH interval wait is restarted.  If the secondary finds it
  1554. impossible to perform a serial check for the EXPIRE interval, it must
  1555. assume that its copy of the zone is obsolete an discard it.
  1556.  
  1557. When the poll shows that the zone has changed, then the secondary server
  1558. must request a zone transfer via an AXFR request for the zone.  The AXFR
  1559. may cause an error, such as refused, but normally is answered by a
  1560. sequence of response messages.  The first and last messages must contain
  1561.  
  1562.  
  1563.  
  1564. Mockapetris                                                    [Page 28]
  1565.  
  1566. RFC 1034             Domain Concepts and Facilities        November 1987
  1567.  
  1568.  
  1569. the data for the top authoritative node of the zone.  Intermediate
  1570. messages carry all of the other RRs from the zone, including both
  1571. authoritative and non-authoritative RRs.  The stream of messages allows
  1572. the secondary to construct a copy of the zone.  Because accuracy is
  1573. essential, TCP or some other reliable protocol must be used for AXFR
  1574. requests.
  1575.  
  1576. Each secondary server is required to perform the following operations
  1577. against the master, but may also optionally perform these operations
  1578. against other secondary servers.  This strategy can improve the transfer
  1579. process when the primary is unavailable due to host downtime or network
  1580. problems, or when a secondary server has better network access to an
  1581. "intermediate" secondary than to the primary.
  1582.  
  1583. 5. RESOLVERS
  1584.  
  1585. 5.1. Introduction
  1586.  
  1587. Resolvers are programs that interface user programs to domain name
  1588. servers.  In the simplest case, a resolver receives a request from a
  1589. user program (e.g., mail programs, TELNET, FTP) in the form of a
  1590. subroutine call, system call etc., and returns the desired information
  1591. in a form compatible with the local host's data formats.
  1592.  
  1593. The resolver is located on the same machine as the program that requests
  1594. the resolver's services, but it may need to consult name servers on
  1595. other hosts.  Because a resolver may need to consult several name
  1596. servers, or may have the requested information in a local cache, the
  1597. amount of time that a resolver will take to complete can vary quite a
  1598. bit, from milliseconds to several seconds.
  1599.  
  1600. A very important goal of the resolver is to eliminate network delay and
  1601. name server load from most requests by answering them from its cache of
  1602. prior results.  It follows that caches which are shared by multiple
  1603. processes, users, machines, etc., are more efficient than non-shared
  1604. caches.
  1605.  
  1606. 5.2. Client-resolver interface
  1607.  
  1608. 5.2.1. Typical functions
  1609.  
  1610. The client interface to the resolver is influenced by the local host's
  1611. conventions, but the typical resolver-client interface has three
  1612. functions:
  1613.  
  1614.    1. Host name to host address translation.
  1615.  
  1616.       This function is often defined to mimic a previous HOSTS.TXT
  1617.  
  1618.  
  1619.  
  1620. Mockapetris                                                    [Page 29]
  1621.  
  1622. RFC 1034             Domain Concepts and Facilities        November 1987
  1623.  
  1624.  
  1625.       based function.  Given a character string, the caller wants
  1626.       one or more 32 bit IP addresses.  Under the DNS, it
  1627.       translates into a request for type A RRs.  Since the DNS does
  1628.       not preserve the order of RRs, this function may choose to
  1629.       sort the returned addresses or select the "best" address if
  1630.       the service returns only one choice to the client.  Note that
  1631.       a multiple address return is recommended, but a single
  1632.       address may be the only way to emulate prior HOSTS.TXT
  1633.       services.
  1634.  
  1635.    2. Host address to host name translation
  1636.  
  1637.       This function will often follow the form of previous
  1638.       functions.  Given a 32 bit IP address, the caller wants a
  1639.       character string.  The octets of the IP address are reversed,
  1640.       used as name components, and suffixed with "IN-ADDR.ARPA".  A
  1641.       type PTR query is used to get the RR with the primary name of
  1642.       the host.  For example, a request for the host name
  1643.       corresponding to IP address 1.2.3.4 looks for PTR RRs for
  1644.       domain name "4.3.2.1.IN-ADDR.ARPA".
  1645.  
  1646.    3. General lookup function
  1647.  
  1648.       This function retrieves arbitrary information from the DNS,
  1649.       and has no counterpart in previous systems.  The caller
  1650.       supplies a QNAME, QTYPE, and QCLASS, and wants all of the
  1651.       matching RRs.  This function will often use the DNS format
  1652.       for all RR data instead of the local host's, and returns all
  1653.       RR content (e.g., TTL) instead of a processed form with local
  1654.       quoting conventions.
  1655.  
  1656. When the resolver performs the indicated function, it usually has one of
  1657. the following results to pass back to the client:
  1658.  
  1659.    - One or more RRs giving the requested data.
  1660.  
  1661.      In this case the resolver returns the answer in the
  1662.      appropriate format.
  1663.  
  1664.    - A name error (NE).
  1665.  
  1666.      This happens when the referenced name does not exist.  For
  1667.      example, a user may have mistyped a host name.
  1668.  
  1669.    - A data not found error.
  1670.  
  1671.      This happens when the referenced name exists, but data of the
  1672.      appropriate type does not.  For example, a host address
  1673.  
  1674.  
  1675.  
  1676. Mockapetris                                                    [Page 30]
  1677.  
  1678. RFC 1034             Domain Concepts and Facilities        November 1987
  1679.  
  1680.  
  1681.      function applied to a mailbox name would return this error
  1682.      since the name exists, but no address RR is present.
  1683.  
  1684. It is important to note that the functions for translating between host
  1685. names and addresses may combine the "name error" and "data not found"
  1686. error conditions into a single type of error return, but the general
  1687. function should not.  One reason for this is that applications may ask
  1688. first for one type of information about a name followed by a second
  1689. request to the same name for some other type of information; if the two
  1690. errors are combined, then useless queries may slow the application.
  1691.  
  1692. 5.2.2. Aliases
  1693.  
  1694. While attempting to resolve a particular request, the resolver may find
  1695. that the name in question is an alias.  For example, the resolver might
  1696. find that the name given for host name to address translation is an
  1697. alias when it finds the CNAME RR.  If possible, the alias condition
  1698. should be signalled back from the resolver to the client.
  1699.  
  1700. In most cases a resolver simply restarts the query at the new name when
  1701. it encounters a CNAME.  However, when performing the general function,
  1702. the resolver should not pursue aliases when the CNAME RR matches the
  1703. query type.  This allows queries which ask whether an alias is present.
  1704. For example, if the query type is CNAME, the user is interested in the
  1705. CNAME RR itself, and not the RRs at the name it points to.
  1706.  
  1707. Several special conditions can occur with aliases.  Multiple levels of
  1708. aliases should be avoided due to their lack of efficiency, but should
  1709. not be signalled as an error.  Alias loops and aliases which point to
  1710. non-existent names should be caught and an error condition passed back
  1711. to the client.
  1712.  
  1713. 5.2.3. Temporary failures
  1714.  
  1715. In a less than perfect world, all resolvers will occasionally be unable
  1716. to resolve a particular request.  This condition can be caused by a
  1717. resolver which becomes separated from the rest of the network due to a
  1718. link failure or gateway problem, or less often by coincident failure or
  1719. unavailability of all servers for a particular domain.
  1720.  
  1721. It is essential that this sort of condition should not be signalled as a
  1722. name or data not present error to applications.  This sort of behavior
  1723. is annoying to humans, and can wreak havoc when mail systems use the
  1724. DNS.
  1725.  
  1726. While in some cases it is possible to deal with such a temporary problem
  1727. by blocking the request indefinitely, this is usually not a good choice,
  1728. particularly when the client is a server process that could move on to
  1729.  
  1730.  
  1731.  
  1732. Mockapetris                                                    [Page 31]
  1733.  
  1734. RFC 1034             Domain Concepts and Facilities        November 1987
  1735.  
  1736.  
  1737. other tasks.  The recommended solution is to always have temporary
  1738. failure as one of the possible results of a resolver function, even
  1739. though this may make emulation of existing HOSTS.TXT functions more
  1740. difficult.
  1741.  
  1742. 5.3. Resolver internals
  1743.  
  1744. Every resolver implementation uses slightly different algorithms, and
  1745. typically spends much more logic dealing with errors of various sorts
  1746. than typical occurances.  This section outlines a recommended basic
  1747. strategy for resolver operation, but leaves details to [RFC-1035].
  1748.  
  1749. 5.3.1. Stub resolvers
  1750.  
  1751. One option for implementing a resolver is to move the resolution
  1752. function out of the local machine and into a name server which supports
  1753. recursive queries.  This can provide an easy method of providing domain
  1754. service in a PC which lacks the resources to perform the resolver
  1755. function, or can centralize the cache for a whole local network or
  1756. organization.
  1757.  
  1758. All that the remaining stub needs is a list of name server addresses
  1759. that will perform the recursive requests.  This type of resolver
  1760. presumably needs the information in a configuration file, since it
  1761. probably lacks the sophistication to locate it in the domain database.
  1762. The user also needs to verify that the listed servers will perform the
  1763. recursive service; a name server is free to refuse to perform recursive
  1764. services for any or all clients.  The user should consult the local
  1765. system administrator to find name servers willing to perform the
  1766. service.
  1767.  
  1768. This type of service suffers from some drawbacks.  Since the recursive
  1769. requests may take an arbitrary amount of time to perform, the stub may
  1770. have difficulty optimizing retransmission intervals to deal with both
  1771. lost UDP packets and dead servers; the name server can be easily
  1772. overloaded by too zealous a stub if it interprets retransmissions as new
  1773. requests.  Use of TCP may be an answer, but TCP may well place burdens
  1774. on the host's capabilities which are similar to those of a real
  1775. resolver.
  1776.  
  1777. 5.3.2. Resources
  1778.  
  1779. In addition to its own resources, the resolver may also have shared
  1780. access to zones maintained by a local name server.  This gives the
  1781. resolver the advantage of more rapid access, but the resolver must be
  1782. careful to never let cached information override zone data.  In this
  1783. discussion the term "local information" is meant to mean the union of
  1784. the cache and such shared zones, with the understanding that
  1785.  
  1786.  
  1787.  
  1788. Mockapetris                                                    [Page 32]
  1789.  
  1790. RFC 1034             Domain Concepts and Facilities        November 1987
  1791.  
  1792.  
  1793. authoritative data is always used in preference to cached data when both
  1794. are present.
  1795.  
  1796. The following resolver algorithm assumes that all functions have been
  1797. converted to a general lookup function, and uses the following data
  1798. structures to represent the state of a request in progress in the
  1799. resolver:
  1800.  
  1801. SNAME           the domain name we are searching for.
  1802.  
  1803. STYPE           the QTYPE of the search request.
  1804.  
  1805. SCLASS          the QCLASS of the search request.
  1806.  
  1807. SLIST           a structure which describes the name servers and the
  1808.                 zone which the resolver is currently trying to query.
  1809.                 This structure keeps track of the resolver's current
  1810.                 best guess about which name servers hold the desired
  1811.                 information; it is updated when arriving information
  1812.                 changes the guess.  This structure includes the
  1813.                 equivalent of a zone name, the known name servers for
  1814.                 the zone, the known addresses for the name servers, and
  1815.                 history information which can be used to suggest which
  1816.                 server is likely to be the best one to try next.  The
  1817.                 zone name equivalent is a match count of the number of
  1818.                 labels from the root down which SNAME has in common with
  1819.                 the zone being queried; this is used as a measure of how
  1820.                 "close" the resolver is to SNAME.
  1821.  
  1822. SBELT           a "safety belt" structure of the same form as SLIST,
  1823.                 which is initialized from a configuration file, and
  1824.                 lists servers which should be used when the resolver
  1825.                 doesn't have any local information to guide name server
  1826.                 selection.  The match count will be -1 to indicate that
  1827.                 no labels are known to match.
  1828.  
  1829. CACHE           A structure which stores the results from previous
  1830.                 responses.  Since resolvers are responsible for
  1831.                 discarding old RRs whose TTL has expired, most
  1832.                 implementations convert the interval specified in
  1833.                 arriving RRs to some sort of absolute time when the RR
  1834.                 is stored in the cache.  Instead of counting the TTLs
  1835.                 down individually, the resolver just ignores or discards
  1836.                 old RRs when it runs across them in the course of a
  1837.                 search, or discards them during periodic sweeps to
  1838.                 reclaim the memory consumed by old RRs.
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844. Mockapetris                                                    [Page 33]
  1845.  
  1846. RFC 1034             Domain Concepts and Facilities        November 1987
  1847.  
  1848.  
  1849. 5.3.3. Algorithm
  1850.  
  1851. The top level algorithm has four steps:
  1852.  
  1853.    1. See if the answer is in local information, and if so return
  1854.       it to the client.
  1855.  
  1856.    2. Find the best servers to ask.
  1857.  
  1858.    3. Send them queries until one returns a response.
  1859.  
  1860.    4. Analyze the response, either:
  1861.  
  1862.          a. if the response answers the question or contains a name
  1863.             error, cache the data as well as returning it back to
  1864.             the client.
  1865.  
  1866.          b. if the response contains a better delegation to other
  1867.             servers, cache the delegation information, and go to
  1868.             step 2.
  1869.  
  1870.          c. if the response shows a CNAME and that is not the
  1871.             answer itself, cache the CNAME, change the SNAME to the
  1872.             canonical name in the CNAME RR and go to step 1.
  1873.  
  1874.          d. if the response shows a servers failure or other
  1875.             bizarre contents, delete the server from the SLIST and
  1876.             go back to step 3.
  1877.  
  1878. Step 1 searches the cache for the desired data. If the data is in the
  1879. cache, it is assumed to be good enough for normal use.  Some resolvers
  1880. have an option at the user interface which will force the resolver to
  1881. ignore the cached data and consult with an authoritative server.  This
  1882. is not recommended as the default.  If the resolver has direct access to
  1883. a name server's zones, it should check to see if the desired data is
  1884. present in authoritative form, and if so, use the authoritative data in
  1885. preference to cached data.
  1886.  
  1887. Step 2 looks for a name server to ask for the required data.  The
  1888. general strategy is to look for locally-available name server RRs,
  1889. starting at SNAME, then the parent domain name of SNAME, the
  1890. grandparent, and so on toward the root.  Thus if SNAME were
  1891. Mockapetris.ISI.EDU, this step would look for NS RRs for
  1892. Mockapetris.ISI.EDU, then ISI.EDU, then EDU, and then . (the root).
  1893. These NS RRs list the names of hosts for a zone at or above SNAME.  Copy
  1894. the names into SLIST.  Set up their addresses using local data.  It may
  1895. be the case that the addresses are not available.  The resolver has many
  1896. choices here; the best is to start parallel resolver processes looking
  1897.  
  1898.  
  1899.  
  1900. Mockapetris                                                    [Page 34]
  1901.  
  1902. RFC 1034             Domain Concepts and Facilities        November 1987
  1903.  
  1904.  
  1905. for the addresses while continuing onward with the addresses which are
  1906. available.  Obviously, the design choices and options are complicated
  1907. and a function of the local host's capabilities.  The recommended
  1908. priorities for the resolver designer are:
  1909.  
  1910.    1. Bound the amount of work (packets sent, parallel processes
  1911.       started) so that a request can't get into an infinite loop or
  1912.       start off a chain reaction of requests or queries with other
  1913.       implementations EVEN IF SOMEONE HAS INCORRECTLY CONFIGURED
  1914.       SOME DATA.
  1915.  
  1916.    2. Get back an answer if at all possible.
  1917.  
  1918.    3. Avoid unnecessary transmissions.
  1919.  
  1920.    4. Get the answer as quickly as possible.
  1921.  
  1922. If the search for NS RRs fails, then the resolver initializes SLIST from
  1923. the safety belt SBELT.  The basic idea is that when the resolver has no
  1924. idea what servers to ask, it should use information from a configuration
  1925. file that lists several servers which are expected to be helpful.
  1926. Although there are special situations, the usual choice is two of the
  1927. root servers and two of the servers for the host's domain.  The reason
  1928. for two of each is for redundancy.  The root servers will provide
  1929. eventual access to all of the domain space.  The two local servers will
  1930. allow the resolver to continue to resolve local names if the local
  1931. network becomes isolated from the internet due to gateway or link
  1932. failure.
  1933.  
  1934. In addition to the names and addresses of the servers, the SLIST data
  1935. structure can be sorted to use the best servers first, and to insure
  1936. that all addresses of all servers are used in a round-robin manner.  The
  1937. sorting can be a simple function of preferring addresses on the local
  1938. network over others, or may involve statistics from past events, such as
  1939. previous response times and batting averages.
  1940.  
  1941. Step 3 sends out queries until a response is received.  The strategy is
  1942. to cycle around all of the addresses for all of the servers with a
  1943. timeout between each transmission.  In practice it is important to use
  1944. all addresses of a multihomed host, and too aggressive a retransmission
  1945. policy actually slows response when used by multiple resolvers
  1946. contending for the same name server and even occasionally for a single
  1947. resolver.  SLIST typically contains data values to control the timeouts
  1948. and keep track of previous transmissions.
  1949.  
  1950. Step 4 involves analyzing responses.  The resolver should be highly
  1951. paranoid in its parsing of responses.  It should also check that the
  1952. response matches the query it sent using the ID field in the response.
  1953.  
  1954.  
  1955.  
  1956. Mockapetris                                                    [Page 35]
  1957.  
  1958. RFC 1034             Domain Concepts and Facilities        November 1987
  1959.  
  1960.  
  1961. The ideal answer is one from a server authoritative for the query which
  1962. either gives the required data or a name error.  The data is passed back
  1963. to the user and entered in the cache for future use if its TTL is
  1964. greater than zero.
  1965.  
  1966. If the response shows a delegation, the resolver should check to see
  1967. that the delegation is "closer" to the answer than the servers in SLIST
  1968. are.  This can be done by comparing the match count in SLIST with that
  1969. computed from SNAME and the NS RRs in the delegation.  If not, the reply
  1970. is bogus and should be ignored.  If the delegation is valid the NS
  1971. delegation RRs and any address RRs for the servers should be cached.
  1972. The name servers are entered in the SLIST, and the search is restarted.
  1973.  
  1974. If the response contains a CNAME, the search is restarted at the CNAME
  1975. unless the response has the data for the canonical name or if the CNAME
  1976. is the answer itself.
  1977.  
  1978. Details and implementation hints can be found in [RFC-1035].
  1979.  
  1980. 6. A SCENARIO
  1981.  
  1982. In our sample domain space, suppose we wanted separate administrative
  1983. control for the root, MIL, EDU, MIT.EDU and ISI.EDU zones.  We might
  1984. allocate name servers as follows:
  1985.  
  1986.  
  1987.                                    |(C.ISI.EDU,SRI-NIC.ARPA
  1988.                                    | A.ISI.EDU)
  1989.              +---------------------+------------------+
  1990.              |                     |                  |
  1991.             MIL                   EDU                ARPA
  1992.              |(SRI-NIC.ARPA,       |(SRI-NIC.ARPA,    |
  1993.              | A.ISI.EDU           | C.ISI.EDU)       |
  1994.        +-----+-----+               |     +------+-----+-----+
  1995.        |     |     |               |     |      |           |
  1996.       BRL  NOSC  DARPA             |  IN-ADDR  SRI-NIC     ACC
  1997.                                    |
  1998.        +--------+------------------+---------------+--------+
  1999.        |        |                  |               |        |
  2000.       UCI      MIT                 |              UDEL     YALE
  2001.                 |(XX.LCS.MIT.EDU, ISI
  2002.                 |ACHILLES.MIT.EDU) |(VAXA.ISI.EDU,VENERA.ISI.EDU,
  2003.             +---+---+              | A.ISI.EDU)
  2004.             |       |              |
  2005.            LCS   ACHILLES +--+-----+-----+--------+
  2006.             |             |  |     |     |        |
  2007.             XX            A  C   VAXA  VENERA Mockapetris
  2008.  
  2009.  
  2010.  
  2011.  
  2012. Mockapetris                                                    [Page 36]
  2013.  
  2014. RFC 1034             Domain Concepts and Facilities        November 1987
  2015.  
  2016.  
  2017. In this example, the authoritative name server is shown in parentheses
  2018. at the point in the domain tree at which is assumes control.
  2019.  
  2020. Thus the root name servers are on C.ISI.EDU, SRI-NIC.ARPA, and
  2021. A.ISI.EDU.  The MIL domain is served by SRI-NIC.ARPA and A.ISI.EDU.  The
  2022. EDU domain is served by SRI-NIC.ARPA. and C.ISI.EDU.  Note that servers
  2023. may have zones which are contiguous or disjoint.  In this scenario,
  2024. C.ISI.EDU has contiguous zones at the root and EDU domains.  A.ISI.EDU
  2025. has contiguous zones at the root and MIL domains, but also has a non-
  2026. contiguous zone at ISI.EDU.
  2027.  
  2028. 6.1. C.ISI.EDU name server
  2029.  
  2030. C.ISI.EDU is a name server for the root, MIL, and EDU domains of the IN
  2031. class, and would have zones for these domains.  The zone data for the
  2032. root domain might be:
  2033.  
  2034.     .       IN      SOA     SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA. (
  2035.                             870611          ;serial
  2036.                             1800            ;refresh every 30 min
  2037.                             300             ;retry every 5 min
  2038.                             604800          ;expire after a week
  2039.                             86400)          ;minimum of a day
  2040.                     NS      A.ISI.EDU.
  2041.                     NS      C.ISI.EDU.
  2042.                     NS      SRI-NIC.ARPA.
  2043.  
  2044.     MIL.    86400   NS      SRI-NIC.ARPA.
  2045.             86400   NS      A.ISI.EDU.
  2046.  
  2047.     EDU.    86400   NS      SRI-NIC.ARPA.
  2048.             86400   NS      C.ISI.EDU.
  2049.  
  2050.     SRI-NIC.ARPA.   A       26.0.0.73
  2051.                     A       10.0.0.51
  2052.                     MX      0 SRI-NIC.ARPA.
  2053.                     HINFO   DEC-2060 TOPS20
  2054.  
  2055.     ACC.ARPA.       A       26.6.0.65
  2056.                     HINFO   PDP-11/70 UNIX
  2057.                     MX      10 ACC.ARPA.
  2058.  
  2059.     USC-ISIC.ARPA.  CNAME   C.ISI.EDU.
  2060.  
  2061.     73.0.0.26.IN-ADDR.ARPA.  PTR    SRI-NIC.ARPA.
  2062.     65.0.6.26.IN-ADDR.ARPA.  PTR    ACC.ARPA.
  2063.     51.0.0.10.IN-ADDR.ARPA.  PTR    SRI-NIC.ARPA.
  2064.     52.0.0.10.IN-ADDR.ARPA.  PTR    C.ISI.EDU.
  2065.  
  2066.  
  2067.  
  2068. Mockapetris                                                    [Page 37]
  2069.  
  2070. RFC 1034             Domain Concepts and Facilities        November 1987
  2071.  
  2072.  
  2073.     103.0.3.26.IN-ADDR.ARPA. PTR    A.ISI.EDU.
  2074.  
  2075.     A.ISI.EDU. 86400 A      26.3.0.103
  2076.     C.ISI.EDU. 86400 A      10.0.0.52
  2077.  
  2078. This data is represented as it would be in a master file.  Most RRs are
  2079. single line entries; the sole exception here is the SOA RR, which uses
  2080. "(" to start a multi-line RR and ")" to show the end of a multi-line RR.
  2081. Since the class of all RRs in a zone must be the same, only the first RR
  2082. in a zone need specify the class.  When a name server loads a zone, it
  2083. forces the TTL of all authoritative RRs to be at least the MINIMUM field
  2084. of the SOA, here 86400 seconds, or one day.  The NS RRs marking
  2085. delegation of the MIL and EDU domains, together with the glue RRs for
  2086. the servers host addresses, are not part of the authoritative data in
  2087. the zone, and hence have explicit TTLs.
  2088.  
  2089. Four RRs are attached to the root node: the SOA which describes the root
  2090. zone and the 3 NS RRs which list the name servers for the root.  The
  2091. data in the SOA RR describes the management of the zone.  The zone data
  2092. is maintained on host SRI-NIC.ARPA, and the responsible party for the
  2093. zone is HOSTMASTER@SRI-NIC.ARPA.  A key item in the SOA is the 86400
  2094. second minimum TTL, which means that all authoritative data in the zone
  2095. has at least that TTL, although higher values may be explicitly
  2096. specified.
  2097.  
  2098. The NS RRs for the MIL and EDU domains mark the boundary between the
  2099. root zone and the MIL and EDU zones.  Note that in this example, the
  2100. lower zones happen to be supported by name servers which also support
  2101. the root zone.
  2102.  
  2103. The master file for the EDU zone might be stated relative to the origin
  2104. EDU.  The zone data for the EDU domain might be:
  2105.  
  2106.     EDU.  IN SOA SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA. (
  2107.                             870729 ;serial
  2108.                             1800 ;refresh every 30 minutes
  2109.                             300 ;retry every 5 minutes
  2110.                             604800 ;expire after a week
  2111.                             86400 ;minimum of a day
  2112.                             )
  2113.                     NS SRI-NIC.ARPA.
  2114.                     NS C.ISI.EDU.
  2115.  
  2116.     UCI 172800 NS ICS.UCI
  2117.                     172800 NS ROME.UCI
  2118.     ICS.UCI 172800 A 192.5.19.1
  2119.     ROME.UCI 172800 A 192.5.19.31
  2120.  
  2121.  
  2122.  
  2123.  
  2124. Mockapetris                                                    [Page 38]
  2125.  
  2126. RFC 1034             Domain Concepts and Facilities        November 1987
  2127.  
  2128.  
  2129.     ISI 172800 NS VAXA.ISI
  2130.                     172800 NS A.ISI
  2131.                     172800 NS VENERA.ISI.EDU.
  2132.     VAXA.ISI 172800 A 10.2.0.27
  2133.                     172800 A 128.9.0.33
  2134.     VENERA.ISI.EDU. 172800 A 10.1.0.52
  2135.                     172800 A 128.9.0.32
  2136.     A.ISI 172800 A 26.3.0.103
  2137.  
  2138.     UDEL.EDU.  172800 NS LOUIE.UDEL.EDU.
  2139.                     172800 NS UMN-REI-UC.ARPA.
  2140.     LOUIE.UDEL.EDU. 172800 A 10.0.0.96
  2141.                     172800 A 192.5.39.3
  2142.  
  2143.     YALE.EDU.  172800 NS YALE.ARPA.
  2144.     YALE.EDU.  172800 NS YALE-BULLDOG.ARPA.
  2145.  
  2146.     MIT.EDU.  43200 NS XX.LCS.MIT.EDU.
  2147.                       43200 NS ACHILLES.MIT.EDU.
  2148.     XX.LCS.MIT.EDU.  43200 A 10.0.0.44
  2149.     ACHILLES.MIT.EDU. 43200 A 18.72.0.8
  2150.  
  2151. Note the use of relative names here.  The owner name for the ISI.EDU. is
  2152. stated using a relative name, as are two of the name server RR contents.
  2153. Relative and absolute domain names may be freely intermixed in a master
  2154.  
  2155. 6.2. Example standard queries
  2156.  
  2157. The following queries and responses illustrate name server behavior.
  2158. Unless otherwise noted, the queries do not have recursion desired (RD)
  2159. in the header.  Note that the answers to non-recursive queries do depend
  2160. on the server being asked, but do not depend on the identity of the
  2161. requester.
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180. Mockapetris                                                    [Page 39]
  2181.  
  2182. RFC 1034             Domain Concepts and Facilities        November 1987
  2183.  
  2184.  
  2185. 6.2.1. QNAME=SRI-NIC.ARPA, QTYPE=A
  2186.  
  2187. The query would look like:
  2188.  
  2189.                +---------------------------------------------------+
  2190.     Header     | OPCODE=SQUERY                                     |
  2191.                +---------------------------------------------------+
  2192.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A           |
  2193.                +---------------------------------------------------+
  2194.     Answer     | <empty>                                           |
  2195.                +---------------------------------------------------+
  2196.     Authority  | <empty>                                           |
  2197.                +---------------------------------------------------+
  2198.     Additional | <empty>                                           |
  2199.                +---------------------------------------------------+
  2200.  
  2201. The response from C.ISI.EDU would be:
  2202.  
  2203.                +---------------------------------------------------+
  2204.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  2205.                +---------------------------------------------------+
  2206.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A           |
  2207.                +---------------------------------------------------+
  2208.     Answer     | SRI-NIC.ARPA. 86400 IN A 26.0.0.73                |
  2209.                |               86400 IN A 10.0.0.51                |
  2210.                +---------------------------------------------------+
  2211.     Authority  | <empty>                                           |
  2212.                +---------------------------------------------------+
  2213.     Additional | <empty>                                           |
  2214.                +---------------------------------------------------+
  2215.  
  2216. The header of the response looks like the header of the query, except
  2217. that the RESPONSE bit is set, indicating that this message is a
  2218. response, not a query, and the Authoritative Answer (AA) bit is set
  2219. indicating that the address RRs in the answer section are from
  2220. authoritative data.  The question section of the response matches the
  2221. question section of the query.
  2222.  
  2223.  
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236. Mockapetris                                                    [Page 40]
  2237.  
  2238. RFC 1034             Domain Concepts and Facilities        November 1987
  2239.  
  2240.  
  2241. If the same query was sent to some other server which was not
  2242. authoritative for SRI-NIC.ARPA, the response might be:
  2243.  
  2244.                +---------------------------------------------------+
  2245.     Header     | OPCODE=SQUERY,RESPONSE                            |
  2246.                +---------------------------------------------------+
  2247.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A           |
  2248.                +---------------------------------------------------+
  2249.     Answer     | SRI-NIC.ARPA. 1777 IN A 10.0.0.51                 |
  2250.                |               1777 IN A 26.0.0.73                 |
  2251.                +---------------------------------------------------+
  2252.     Authority  | <empty>                                           |
  2253.                +---------------------------------------------------+
  2254.     Additional | <empty>                                           |
  2255.                +---------------------------------------------------+
  2256.  
  2257. This response is different from the previous one in two ways: the header
  2258. does not have AA set, and the TTLs are different.  The inference is that
  2259. the data did not come from a zone, but from a cache.  The difference
  2260. between the authoritative TTL and the TTL here is due to aging of the
  2261. data in a cache.  The difference in ordering of the RRs in the answer
  2262. section is not significant.
  2263.  
  2264. 6.2.2. QNAME=SRI-NIC.ARPA, QTYPE=*
  2265.  
  2266. A query similar to the previous one, but using a QTYPE of *, would
  2267. receive the following response from C.ISI.EDU:
  2268.  
  2269.                +---------------------------------------------------+
  2270.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  2271.                +---------------------------------------------------+
  2272.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=*           |
  2273.                +---------------------------------------------------+
  2274.     Answer     | SRI-NIC.ARPA. 86400 IN  A     26.0.0.73           |
  2275.                |                         A     10.0.0.51           |
  2276.                |                         MX    0 SRI-NIC.ARPA.     |
  2277.                |                         HINFO DEC-2060 TOPS20     |
  2278.                +---------------------------------------------------+
  2279.     Authority  | <empty>                                           |
  2280.                +---------------------------------------------------+
  2281.     Additional | <empty>                                           |
  2282.                +---------------------------------------------------+
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292. Mockapetris                                                    [Page 41]
  2293.  
  2294. RFC 1034             Domain Concepts and Facilities        November 1987
  2295.  
  2296.  
  2297. If a similar query was directed to two name servers which are not
  2298. authoritative for SRI-NIC.ARPA, the responses might be:
  2299.  
  2300.                +---------------------------------------------------+
  2301.     Header     | OPCODE=SQUERY, RESPONSE                           |
  2302.                +---------------------------------------------------+
  2303.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=*           |
  2304.                +---------------------------------------------------+
  2305.     Answer     | SRI-NIC.ARPA. 12345 IN     A       26.0.0.73      |
  2306.                |                            A       10.0.0.51      |
  2307.                +---------------------------------------------------+
  2308.     Authority  | <empty>                                           |
  2309.                +---------------------------------------------------+
  2310.     Additional | <empty>                                           |
  2311.                +---------------------------------------------------+
  2312.  
  2313. and
  2314.  
  2315.                +---------------------------------------------------+
  2316.     Header     | OPCODE=SQUERY, RESPONSE                           |
  2317.                +---------------------------------------------------+
  2318.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=*           |
  2319.                +---------------------------------------------------+
  2320.     Answer     | SRI-NIC.ARPA. 1290 IN HINFO  DEC-2060 TOPS20      |
  2321.                +---------------------------------------------------+
  2322.     Authority  | <empty>                                           |
  2323.                +---------------------------------------------------+
  2324.     Additional | <empty>                                           |
  2325.                +---------------------------------------------------+
  2326.  
  2327. Neither of these answers have AA set, so neither response comes from
  2328. authoritative data.  The different contents and different TTLs suggest
  2329. that the two servers cached data at different times, and that the first
  2330. server cached the response to a QTYPE=A query and the second cached the
  2331. response to a HINFO query.
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348. Mockapetris                                                    [Page 42]
  2349.  
  2350. RFC 1034             Domain Concepts and Facilities        November 1987
  2351.  
  2352.  
  2353. 6.2.3. QNAME=SRI-NIC.ARPA, QTYPE=MX
  2354.  
  2355. This type of query might be result from a mailer trying to look up
  2356. routing information for the mail destination HOSTMASTER@SRI-NIC.ARPA.
  2357. The response from C.ISI.EDU would be:
  2358.  
  2359.                +---------------------------------------------------+
  2360.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  2361.                +---------------------------------------------------+
  2362.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=MX          |
  2363.                +---------------------------------------------------+
  2364.     Answer     | SRI-NIC.ARPA. 86400 IN     MX      0 SRI-NIC.ARPA.|
  2365.                +---------------------------------------------------+
  2366.     Authority  | <empty>                                           |
  2367.                +---------------------------------------------------+
  2368.     Additional | SRI-NIC.ARPA. 86400 IN     A       26.0.0.73      |
  2369.                |                            A       10.0.0.51      |
  2370.                +---------------------------------------------------+
  2371.  
  2372. This response contains the MX RR in the answer section of the response.
  2373. The additional section contains the address RRs because the name server
  2374. at C.ISI.EDU guesses that the requester will need the addresses in order
  2375. to properly use the information carried by the MX.
  2376.  
  2377. 6.2.4. QNAME=SRI-NIC.ARPA, QTYPE=NS
  2378.  
  2379. C.ISI.EDU would reply to this query with:
  2380.  
  2381.                +---------------------------------------------------+
  2382.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  2383.                +---------------------------------------------------+
  2384.     Question   | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=NS          |
  2385.                +---------------------------------------------------+
  2386.     Answer     | <empty>                                           |
  2387.                +---------------------------------------------------+
  2388.     Authority  | <empty>                                           |
  2389.                +---------------------------------------------------+
  2390.     Additional | <empty>                                           |
  2391.                +---------------------------------------------------+
  2392.  
  2393. The only difference between the response and the query is the AA and
  2394. RESPONSE bits in the header.  The interpretation of this response is
  2395. that the server is authoritative for the name, and the name exists, but
  2396. no RRs of type NS are present there.
  2397.  
  2398. 6.2.5. QNAME=SIR-NIC.ARPA, QTYPE=A
  2399.  
  2400. If a user mistyped a host name, we might see this type of query.
  2401.  
  2402.  
  2403.  
  2404. Mockapetris                                                    [Page 43]
  2405.  
  2406. RFC 1034             Domain Concepts and Facilities        November 1987
  2407.  
  2408.  
  2409. C.ISI.EDU would answer it with:
  2410.  
  2411.                +---------------------------------------------------+
  2412.     Header     | OPCODE=SQUERY, RESPONSE, AA, RCODE=NE             |
  2413.                +---------------------------------------------------+
  2414.     Question   | QNAME=SIR-NIC.ARPA., QCLASS=IN, QTYPE=A           |
  2415.                +---------------------------------------------------+
  2416.     Answer     | <empty>                                           |
  2417.                +---------------------------------------------------+
  2418.     Authority  | . SOA SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA.      |
  2419.                |       870611 1800 300 604800 86400                |
  2420.                +---------------------------------------------------+
  2421.     Additional | <empty>                                           |
  2422.                +---------------------------------------------------+
  2423.  
  2424. This response states that the name does not exist.  This condition is
  2425. signalled in the response code (RCODE) section of the header.
  2426.  
  2427. The SOA RR in the authority section is the optional negative caching
  2428. information which allows the resolver using this response to assume that
  2429. the name will not exist for the SOA MINIMUM (86400) seconds.
  2430.  
  2431. 6.2.6. QNAME=BRL.MIL, QTYPE=A
  2432.  
  2433. If this query is sent to C.ISI.EDU, the reply would be:
  2434.  
  2435.                +---------------------------------------------------+
  2436.     Header     | OPCODE=SQUERY, RESPONSE                           |
  2437.                +---------------------------------------------------+
  2438.     Question   | QNAME=BRL.MIL, QCLASS=IN, QTYPE=A                 |
  2439.                +---------------------------------------------------+
  2440.     Answer     | <empty>                                           |
  2441.                +---------------------------------------------------+
  2442.     Authority  | MIL.             86400 IN NS       SRI-NIC.ARPA.  |
  2443.                |                  86400    NS       A.ISI.EDU.     |
  2444.                +---------------------------------------------------+
  2445.     Additional | A.ISI.EDU.                A        26.3.0.103     |
  2446.                | SRI-NIC.ARPA.             A        26.0.0.73      |
  2447.                |                           A        10.0.0.51      |
  2448.                +---------------------------------------------------+
  2449.  
  2450. This response has an empty answer section, but is not authoritative, so
  2451. it is a referral.  The name server on C.ISI.EDU, realizing that it is
  2452. not authoritative for the MIL domain, has referred the requester to
  2453. servers on A.ISI.EDU and SRI-NIC.ARPA, which it knows are authoritative
  2454. for the MIL domain.
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460. Mockapetris                                                    [Page 44]
  2461.  
  2462. RFC 1034             Domain Concepts and Facilities        November 1987
  2463.  
  2464.  
  2465. 6.2.7. QNAME=USC-ISIC.ARPA, QTYPE=A
  2466.  
  2467. The response to this query from A.ISI.EDU would be:
  2468.  
  2469.                +---------------------------------------------------+
  2470.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  2471.                +---------------------------------------------------+
  2472.     Question   | QNAME=USC-ISIC.ARPA., QCLASS=IN, QTYPE=A          |
  2473.                +---------------------------------------------------+
  2474.     Answer     | USC-ISIC.ARPA. 86400 IN CNAME      C.ISI.EDU.     |
  2475.                | C.ISI.EDU.     86400 IN A          10.0.0.52      |
  2476.                +---------------------------------------------------+
  2477.     Authority  | <empty>                                           |
  2478.                +---------------------------------------------------+
  2479.     Additional | <empty>                                           |
  2480.                +---------------------------------------------------+
  2481.  
  2482. Note that the AA bit in the header guarantees that the data matching
  2483. QNAME is authoritative, but does not say anything about whether the data
  2484. for C.ISI.EDU is authoritative.  This complete reply is possible because
  2485. A.ISI.EDU happens to be authoritative for both the ARPA domain where
  2486. USC-ISIC.ARPA is found and the ISI.EDU domain where C.ISI.EDU data is
  2487. found.
  2488.  
  2489. If the same query was sent to C.ISI.EDU, its response might be the same
  2490. as shown above if it had its own address in its cache, but might also
  2491. be:
  2492.  
  2493.  
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516. Mockapetris                                                    [Page 45]
  2517.  
  2518. RFC 1034             Domain Concepts and Facilities        November 1987
  2519.  
  2520.  
  2521.                +---------------------------------------------------+
  2522.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  2523.                +---------------------------------------------------+
  2524.     Question   | QNAME=USC-ISIC.ARPA., QCLASS=IN, QTYPE=A          |
  2525.                +---------------------------------------------------+
  2526.     Answer     | USC-ISIC.ARPA.   86400 IN CNAME   C.ISI.EDU.      |
  2527.                +---------------------------------------------------+
  2528.     Authority  | ISI.EDU.        172800 IN NS      VAXA.ISI.EDU.   |
  2529.                |                           NS      A.ISI.EDU.      |
  2530.                |                           NS      VENERA.ISI.EDU. |
  2531.                +---------------------------------------------------+
  2532.     Additional | VAXA.ISI.EDU.   172800    A       10.2.0.27       |
  2533.                |                 172800    A       128.9.0.33      |
  2534.                | VENERA.ISI.EDU. 172800    A       10.1.0.52       |
  2535.                |                 172800    A       128.9.0.32      |
  2536.                | A.ISI.EDU.      172800    A       26.3.0.103      |
  2537.                +---------------------------------------------------+
  2538.  
  2539. This reply contains an authoritative reply for the alias USC-ISIC.ARPA,
  2540. plus a referral to the name servers for ISI.EDU.  This sort of reply
  2541. isn't very likely given that the query is for the host name of the name
  2542. server being asked, but would be common for other aliases.
  2543.  
  2544. 6.2.8. QNAME=USC-ISIC.ARPA, QTYPE=CNAME
  2545.  
  2546. If this query is sent to either A.ISI.EDU or C.ISI.EDU, the reply would
  2547. be:
  2548.  
  2549.                +---------------------------------------------------+
  2550.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  2551.                +---------------------------------------------------+
  2552.     Question   | QNAME=USC-ISIC.ARPA., QCLASS=IN, QTYPE=A          |
  2553.                +---------------------------------------------------+
  2554.     Answer     | USC-ISIC.ARPA. 86400 IN CNAME      C.ISI.EDU.     |
  2555.                +---------------------------------------------------+
  2556.     Authority  | <empty>                                           |
  2557.                +---------------------------------------------------+
  2558.     Additional | <empty>                                           |
  2559.                +---------------------------------------------------+
  2560.  
  2561. Because QTYPE=CNAME, the CNAME RR itself answers the query, and the name
  2562. server doesn't attempt to look up anything for C.ISI.EDU.  (Except
  2563. possibly for the additional section.)
  2564.  
  2565. 6.3. Example resolution
  2566.  
  2567. The following examples illustrate the operations a resolver must perform
  2568. for its client.  We assume that the resolver is starting without a
  2569.  
  2570.  
  2571.  
  2572. Mockapetris                                                    [Page 46]
  2573.  
  2574. RFC 1034             Domain Concepts and Facilities        November 1987
  2575.  
  2576.  
  2577. cache, as might be the case after system boot.  We further assume that
  2578. the system is not one of the hosts in the data and that the host is
  2579. located somewhere on net 26, and that its safety belt (SBELT) data
  2580. structure has the following information:
  2581.  
  2582.     Match count = -1
  2583.     SRI-NIC.ARPA.   26.0.0.73       10.0.0.51
  2584.     A.ISI.EDU.      26.3.0.103
  2585.  
  2586. This information specifies servers to try, their addresses, and a match
  2587. count of -1, which says that the servers aren't very close to the
  2588. target.  Note that the -1 isn't supposed to be an accurate closeness
  2589. measure, just a value so that later stages of the algorithm will work.
  2590.  
  2591. The following examples illustrate the use of a cache, so each example
  2592. assumes that previous requests have completed.
  2593.  
  2594. 6.3.1. Resolve MX for ISI.EDU.
  2595.  
  2596. Suppose the first request to the resolver comes from the local mailer,
  2597. which has mail for PVM@ISI.EDU.  The mailer might then ask for type MX
  2598. RRs for the domain name ISI.EDU.
  2599.  
  2600. The resolver would look in its cache for MX RRs at ISI.EDU, but the
  2601. empty cache wouldn't be helpful.  The resolver would recognize that it
  2602. needed to query foreign servers and try to determine the best servers to
  2603. query.  This search would look for NS RRs for the domains ISI.EDU, EDU,
  2604. and the root.  These searches of the cache would also fail.  As a last
  2605. resort, the resolver would use the information from the SBELT, copying
  2606. it into its SLIST structure.
  2607.  
  2608. At this point the resolver would need to pick one of the three available
  2609. addresses to try.  Given that the resolver is on net 26, it should
  2610. choose either 26.0.0.73 or 26.3.0.103 as its first choice.  It would
  2611. then send off a query of the form:
  2612.  
  2613.  
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628. Mockapetris                                                    [Page 47]
  2629.  
  2630. RFC 1034             Domain Concepts and Facilities        November 1987
  2631.  
  2632.  
  2633.                +---------------------------------------------------+
  2634.     Header     | OPCODE=SQUERY                                     |
  2635.                +---------------------------------------------------+
  2636.     Question   | QNAME=ISI.EDU., QCLASS=IN, QTYPE=MX               |
  2637.                +---------------------------------------------------+
  2638.     Answer     | <empty>                                           |
  2639.                +---------------------------------------------------+
  2640.     Authority  | <empty>                                           |
  2641.                +---------------------------------------------------+
  2642.     Additional | <empty>                                           |
  2643.                +---------------------------------------------------+
  2644.  
  2645. The resolver would then wait for a response to its query or a timeout.
  2646. If the timeout occurs, it would try different servers, then different
  2647. addresses of the same servers, lastly retrying addresses already tried.
  2648. It might eventually receive a reply from SRI-NIC.ARPA:
  2649.  
  2650.                +---------------------------------------------------+
  2651.     Header     | OPCODE=SQUERY, RESPONSE                           |
  2652.                +---------------------------------------------------+
  2653.     Question   | QNAME=ISI.EDU., QCLASS=IN, QTYPE=MX               |
  2654.                +---------------------------------------------------+
  2655.     Answer     | <empty>                                           |
  2656.                +---------------------------------------------------+
  2657.     Authority  | ISI.EDU.        172800 IN NS       VAXA.ISI.EDU.  |
  2658.                |                           NS       A.ISI.EDU.     |
  2659.                |                           NS       VENERA.ISI.EDU.|
  2660.                +---------------------------------------------------+
  2661.     Additional | VAXA.ISI.EDU.   172800    A        10.2.0.27      |
  2662.                |                 172800    A        128.9.0.33     |
  2663.                | VENERA.ISI.EDU. 172800    A        10.1.0.52      |
  2664.                |                 172800    A        128.9.0.32     |
  2665.                | A.ISI.EDU.      172800    A        26.3.0.103     |
  2666.                +---------------------------------------------------+
  2667.  
  2668. The resolver would notice that the information in the response gave a
  2669. closer delegation to ISI.EDU than its existing SLIST (since it matches
  2670. three labels).  The resolver would then cache the information in this
  2671. response and use it to set up a new SLIST:
  2672.  
  2673.     Match count = 3
  2674.     A.ISI.EDU.      26.3.0.103
  2675.     VAXA.ISI.EDU.   10.2.0.27       128.9.0.33
  2676.     VENERA.ISI.EDU. 10.1.0.52       128.9.0.32
  2677.  
  2678. A.ISI.EDU appears on this list as well as the previous one, but that is
  2679. purely coincidental.  The resolver would again start transmitting and
  2680. waiting for responses.  Eventually it would get an answer:
  2681.  
  2682.  
  2683.  
  2684. Mockapetris                                                    [Page 48]
  2685.  
  2686. RFC 1034             Domain Concepts and Facilities        November 1987
  2687.  
  2688.  
  2689.                +---------------------------------------------------+
  2690.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  2691.                +---------------------------------------------------+
  2692.     Question   | QNAME=ISI.EDU., QCLASS=IN, QTYPE=MX               |
  2693.                +---------------------------------------------------+
  2694.     Answer     | ISI.EDU.                MX 10 VENERA.ISI.EDU.     |
  2695.                |                         MX 20 VAXA.ISI.EDU.       |
  2696.                +---------------------------------------------------+
  2697.     Authority  | <empty>                                           |
  2698.                +---------------------------------------------------+
  2699.     Additional | VAXA.ISI.EDU.   172800  A  10.2.0.27              |
  2700.                |                 172800  A  128.9.0.33             |
  2701.                | VENERA.ISI.EDU. 172800  A  10.1.0.52              |
  2702.                |                 172800  A  128.9.0.32             |
  2703.                +---------------------------------------------------+
  2704.  
  2705. The resolver would add this information to its cache, and return the MX
  2706. RRs to its client.
  2707.  
  2708. 6.3.2. Get the host name for address 26.6.0.65
  2709.  
  2710. The resolver would translate this into a request for PTR RRs for
  2711. 65.0.6.26.IN-ADDR.ARPA.  This information is not in the cache, so the
  2712. resolver would look for foreign servers to ask.  No servers would match,
  2713. so it would use SBELT again.  (Note that the servers for the ISI.EDU
  2714. domain are in the cache, but ISI.EDU is not an ancestor of
  2715. 65.0.6.26.IN-ADDR.ARPA, so the SBELT is used.)
  2716.  
  2717. Since this request is within the authoritative data of both servers in
  2718. SBELT, eventually one would return:
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.  
  2739.  
  2740. Mockapetris                                                    [Page 49]
  2741.  
  2742. RFC 1034             Domain Concepts and Facilities        November 1987
  2743.  
  2744.  
  2745.                +---------------------------------------------------+
  2746.     Header     | OPCODE=SQUERY, RESPONSE, AA                       |
  2747.                +---------------------------------------------------+
  2748.     Question   | QNAME=65.0.6.26.IN-ADDR.ARPA.,QCLASS=IN,QTYPE=PTR |
  2749.                +---------------------------------------------------+
  2750.     Answer     | 65.0.6.26.IN-ADDR.ARPA.    PTR     ACC.ARPA.      |
  2751.                +---------------------------------------------------+
  2752.     Authority  | <empty>                                           |
  2753.                +---------------------------------------------------+
  2754.     Additional | <empty>                                           |
  2755.                +---------------------------------------------------+
  2756.  
  2757. 6.3.3. Get the host address of poneria.ISI.EDU
  2758.  
  2759. This request would translate into a type A request for poneria.ISI.EDU.
  2760. The resolver would not find any cached data for this name, but would
  2761. find the NS RRs in the cache for ISI.EDU when it looks for foreign
  2762. servers to ask.  Using this data, it would construct a SLIST of the
  2763. form:
  2764.  
  2765.     Match count = 3
  2766.  
  2767.     A.ISI.EDU.      26.3.0.103
  2768.     VAXA.ISI.EDU.   10.2.0.27       128.9.0.33
  2769.     VENERA.ISI.EDU. 10.1.0.52
  2770.  
  2771. A.ISI.EDU is listed first on the assumption that the resolver orders its
  2772. choices by preference, and A.ISI.EDU is on the same network.
  2773.  
  2774. One of these servers would answer the query.
  2775.  
  2776. 7. REFERENCES and BIBLIOGRAPHY
  2777.  
  2778. [Dyer 87]       Dyer, S., and F. Hsu, "Hesiod", Project Athena
  2779.                 Technical Plan - Name Service, April 1987, version 1.9.
  2780.  
  2781.                 Describes the fundamentals of the Hesiod name service.
  2782.  
  2783. [IEN-116]       J. Postel, "Internet Name Server", IEN-116,
  2784.                 USC/Information Sciences Institute, August 1979.
  2785.  
  2786.                 A name service obsoleted by the Domain Name System, but
  2787.                 still in use.
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796. Mockapetris                                                    [Page 50]
  2797.  
  2798. RFC 1034             Domain Concepts and Facilities        November 1987
  2799.  
  2800.  
  2801. [Quarterman 86] Quarterman, J., and J. Hoskins, "Notable Computer
  2802.                 Networks",Communications of the ACM, October 1986,
  2803.                 volume 29, number 10.
  2804.  
  2805. [RFC-742]       K. Harrenstien, "NAME/FINGER", RFC-742, Network
  2806.                 Information Center, SRI International, December 1977.
  2807.  
  2808. [RFC-768]       J. Postel, "User Datagram Protocol", RFC-768,
  2809.                 USC/Information Sciences Institute, August 1980.
  2810.  
  2811. [RFC-793]       J. Postel, "Transmission Control Protocol", RFC-793,
  2812.                 USC/Information Sciences Institute, September 1981.
  2813.  
  2814. [RFC-799]       D. Mills, "Internet Name Domains", RFC-799, COMSAT,
  2815.                 September 1981.
  2816.  
  2817.                 Suggests introduction of a hierarchy in place of a flat
  2818.                 name space for the Internet.
  2819.  
  2820. [RFC-805]       J. Postel, "Computer Mail Meeting Notes", RFC-805,
  2821.                 USC/Information Sciences Institute, February 1982.
  2822.  
  2823. [RFC-810]       E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD
  2824.                 Internet Host Table Specification", RFC-810, Network
  2825.                 Information Center, SRI International, March 1982.
  2826.  
  2827.                 Obsolete.  See RFC-952.
  2828.  
  2829. [RFC-811]       K. Harrenstien, V. White, and E. Feinler, "Hostnames
  2830.                 Server", RFC-811, Network Information Center, SRI
  2831.                 International, March 1982.
  2832.  
  2833.                 Obsolete.  See RFC-953.
  2834.  
  2835. [RFC-812]       K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC-812,
  2836.                 Network Information Center, SRI International, March
  2837.                 1982.
  2838.  
  2839. [RFC-819]       Z. Su, and J. Postel, "The Domain Naming Convention for
  2840.                 Internet User Applications", RFC-819, Network
  2841.                 Information Center, SRI International, August 1982.
  2842.  
  2843.                 Early thoughts on the design of the domain system.
  2844.                 Current implementation is completely different.
  2845.  
  2846. [RFC-821]       J. Postel, "Simple Mail Transfer Protocol", RFC-821,
  2847.                 USC/Information Sciences Institute, August 1980.
  2848.  
  2849.  
  2850.  
  2851.  
  2852. Mockapetris                                                    [Page 51]
  2853.  
  2854. RFC 1034             Domain Concepts and Facilities        November 1987
  2855.  
  2856.  
  2857. [RFC-830]       Z. Su, "A Distributed System for Internet Name Service",
  2858.                 RFC-830, Network Information Center, SRI International,
  2859.                 October 1982.
  2860.  
  2861.                 Early thoughts on the design of the domain system.
  2862.                 Current implementation is completely different.
  2863.  
  2864. [RFC-882]       P. Mockapetris, "Domain names - Concepts and
  2865.                 Facilities," RFC-882, USC/Information Sciences
  2866.                 Institute, November 1983.
  2867.  
  2868.                 Superceeded by this memo.
  2869.  
  2870. [RFC-883]       P. Mockapetris, "Domain names - Implementation and
  2871.                 Specification," RFC-883, USC/Information Sciences
  2872.                 Institute, November 1983.
  2873.  
  2874.                 Superceeded by this memo.
  2875.  
  2876. [RFC-920]       J. Postel and J. Reynolds, "Domain Requirements",
  2877.                 RFC-920, USC/Information Sciences Institute
  2878.                 October 1984.
  2879.  
  2880.                 Explains the naming scheme for top level domains.
  2881.  
  2882. [RFC-952]       K. Harrenstien, M. Stahl, E. Feinler, "DoD Internet Host
  2883.                 Table Specification", RFC-952, SRI, October 1985.
  2884.  
  2885.                 Specifies the format of HOSTS.TXT, the host/address
  2886.                 table replaced by the DNS.
  2887.  
  2888. [RFC-953]       K. Harrenstien, M. Stahl, E. Feinler, "HOSTNAME Server",
  2889.                 RFC-953, SRI, October 1985.
  2890.  
  2891.                 This RFC contains the official specification of the
  2892.                 hostname server protocol, which is obsoleted by the DNS.
  2893.                 This TCP based protocol accesses information stored in
  2894.                 the RFC-952 format, and is used to obtain copies of the
  2895.                 host table.
  2896.  
  2897. [RFC-973]       P. Mockapetris, "Domain System Changes and
  2898.                 Observations", RFC-973, USC/Information Sciences
  2899.                 Institute, January 1986.
  2900.  
  2901.                 Describes changes to RFC-882 and RFC-883 and reasons for
  2902.                 them.  Now obsolete.
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908. Mockapetris                                                    [Page 52]
  2909.  
  2910. RFC 1034             Domain Concepts and Facilities        November 1987
  2911.  
  2912.  
  2913. [RFC-974]       C. Partridge, "Mail routing and the domain system",
  2914.                 RFC-974, CSNET CIC BBN Labs, January 1986.
  2915.  
  2916.                 Describes the transition from HOSTS.TXT based mail
  2917.                 addressing to the more powerful MX system used with the
  2918.                 domain system.
  2919.  
  2920. [RFC-1001]      NetBIOS Working Group, "Protocol standard for a NetBIOS
  2921.                 service on a TCP/UDP transport: Concepts and Methods",
  2922.                 RFC-1001, March 1987.
  2923.  
  2924.                 This RFC and RFC-1002 are a preliminary design for
  2925.                 NETBIOS on top of TCP/IP which proposes to base NetBIOS
  2926.                 name service on top of the DNS.
  2927.  
  2928. [RFC-1002]      NetBIOS Working Group, "Protocol standard for a NetBIOS
  2929.                 service on a TCP/UDP transport: Detailed
  2930.                 Specifications", RFC-1002, March 1987.
  2931.  
  2932. [RFC-1010]      J. Reynolds and J. Postel, "Assigned Numbers", RFC-1010,
  2933.                 USC/Information Sciences Institute, May 1987
  2934.  
  2935.                 Contains socket numbers and mnemonics for host names,
  2936.                 operating systems, etc.
  2937.  
  2938. [RFC-1031]      W. Lazear, "MILNET Name Domain Transition", RFC-1031,
  2939.                 November 1987.
  2940.  
  2941.                 Describes a plan for converting the MILNET to the DNS.
  2942.  
  2943. [RFC-1032]      M. K. Stahl, "Establishing a Domain - Guidelines for
  2944.                 Administrators", RFC-1032, November 1987.
  2945.  
  2946.                 Describes the registration policies used by the NIC to
  2947.                 administer the top level domains and delegate subzones.
  2948.  
  2949. [RFC-1033]      M. K. Lottor, "Domain Administrators Operations Guide",
  2950.                 RFC-1033, November 1987.
  2951.  
  2952.                 A cookbook for domain administrators.
  2953.  
  2954. [Solomon 82]    M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET
  2955.                 Name Server", Computer Networks, vol 6, nr 3, July 1982.
  2956.  
  2957.                 Describes a name service for CSNET which is independent
  2958.                 from the DNS and DNS use in the CSNET.
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964. Mockapetris                                                    [Page 53]
  2965.  
  2966. RFC 1034             Domain Concepts and Facilities        November 1987
  2967.  
  2968.  
  2969. Index
  2970.  
  2971.           A   12
  2972.           Absolute names   8
  2973.           Aliases   14, 31
  2974.           Authority   6
  2975.           AXFR   17
  2976.  
  2977.           Case of characters   7
  2978.           CH   12
  2979.           CNAME   12, 13, 31
  2980.           Completion queries   18
  2981.  
  2982.           Domain name   6, 7
  2983.  
  2984.           Glue RRs   20
  2985.  
  2986.           HINFO   12
  2987.  
  2988.           IN   12
  2989.           Inverse queries   16
  2990.           Iterative   4
  2991.  
  2992.           Label   7
  2993.  
  2994.           Mailbox names   9
  2995.           MX   12
  2996.  
  2997.           Name error   27, 36
  2998.           Name servers   5, 17
  2999.           NE   30
  3000.           Negative caching   44
  3001.           NS   12
  3002.  
  3003.           Opcode   16
  3004.  
  3005.           PTR   12
  3006.  
  3007.           QCLASS   16
  3008.           QTYPE   16
  3009.  
  3010.           RDATA   13
  3011.           Recursive   4
  3012.           Recursive service   22
  3013.           Relative names   7
  3014.           Resolvers   6
  3015.           RR   12
  3016.  
  3017.  
  3018.  
  3019.  
  3020. Mockapetris                                                    [Page 54]
  3021.  
  3022. RFC 1034             Domain Concepts and Facilities        November 1987
  3023.  
  3024.  
  3025.           Safety belt   33
  3026.           Sections   16
  3027.           SOA   12
  3028.           Standard queries   22
  3029.  
  3030.           Status queries   18
  3031.           Stub resolvers   32
  3032.  
  3033.           TTL   12, 13
  3034.  
  3035.           Wildcards   25
  3036.  
  3037.           Zone transfers   28
  3038.           Zones   19
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.  
  3072.  
  3073.  
  3074.  
  3075.  
  3076. Mockapetris                                                    [Page 55]
  3077.  
  3078. ========================================================================
  3079.  
  3080. Network Working Group                                     P. Mockapetris
  3081. Request for Comments: 1035                                           ISI
  3082.                                                            November 1987
  3083. Obsoletes: RFCs 882, 883, 973
  3084.  
  3085.             DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION
  3086.  
  3087.  
  3088. 1. STATUS OF THIS MEMO
  3089.  
  3090. This RFC describes the details of the domain system and protocol, and
  3091. assumes that the reader is familiar with the concepts discussed in a
  3092. companion RFC, "Domain Names - Concepts and Facilities" [RFC-1034].
  3093.  
  3094. The domain system is a mixture of functions and data types which are an
  3095. official protocol and functions and data types which are still
  3096. experimental.  Since the domain system is intentionally extensible, new
  3097. data types and experimental behavior should always be expected in parts
  3098. of the system beyond the official protocol.  The official protocol parts
  3099. include standard queries, responses and the Internet class RR data
  3100. formats (e.g., host addresses).  Since the previous RFC set, several
  3101. definitions have changed, so some previous definitions are obsolete.
  3102.  
  3103. Experimental or obsolete features are clearly marked in these RFCs, and
  3104. such information should be used with caution.
  3105.  
  3106. The reader is especially cautioned not to depend on the values which
  3107. appear in examples to be current or complete, since their purpose is
  3108. primarily pedagogical.  Distribution of this memo is unlimited.
  3109.  
  3110.                            Table of Contents
  3111.  
  3112.   1. STATUS OF THIS MEMO                                              1
  3113.   2. INTRODUCTION                                                     3
  3114.       2.1. Overview                                                   3
  3115.       2.2. Common configurations                                      4
  3116.       2.3. Conventions                                                7
  3117.           2.3.1. Preferred name syntax                                7
  3118.           2.3.2. Data Transmission Order                              8
  3119.           2.3.3. Character Case                                       9
  3120.           2.3.4. Size limits                                         10
  3121.   3. DOMAIN NAME SPACE AND RR DEFINITIONS                            10
  3122.       3.1. Name space definitions                                    10
  3123.       3.2. RR definitions                                            11
  3124.           3.2.1. Format                                              11
  3125.           3.2.2. TYPE values                                         12
  3126.           3.2.3. QTYPE values                                        12
  3127.           3.2.4. CLASS values                                        13
  3128.  
  3129.  
  3130.  
  3131. Mockapetris                                                     [Page 1]
  3132.  
  3133. RFC 1035        Domain Implementation and Specification    November 1987
  3134.  
  3135.  
  3136.           3.2.5. QCLASS values                                       13
  3137.       3.3. Standard RRs                                              13
  3138.           3.3.1. CNAME RDATA format                                  14
  3139.           3.3.2. HINFO RDATA format                                  14
  3140.           3.3.3. MB RDATA format (EXPERIMENTAL)                      14
  3141.           3.3.4. MD RDATA format (Obsolete)                          15
  3142.           3.3.5. MF RDATA format (Obsolete)                          15
  3143.           3.3.6. MG RDATA format (EXPERIMENTAL)                      16
  3144.           3.3.7. MINFO RDATA format (EXPERIMENTAL)                   16
  3145.           3.3.8. MR RDATA format (EXPERIMENTAL)                      17
  3146.           3.3.9. MX RDATA format                                     17
  3147.           3.3.10. NULL RDATA format (EXPERIMENTAL)                   17
  3148.           3.3.11. NS RDATA format                                    18
  3149.           3.3.12. PTR RDATA format                                   18
  3150.           3.3.13. SOA RDATA format                                   19
  3151.           3.3.14. TXT RDATA format                                   20
  3152.       3.4. ARPA Internet specific RRs                                20
  3153.           3.4.1. A RDATA format                                      20
  3154.           3.4.2. WKS RDATA format                                    21
  3155.       3.5. IN-ADDR.ARPA domain                                       22
  3156.       3.6. Defining new types, classes, and special namespaces       24
  3157.   4. MESSAGES                                                        25
  3158.       4.1. Format                                                    25
  3159.           4.1.1. Header section format                               26
  3160.           4.1.2. Question section format                             28
  3161.           4.1.3. Resource record format                              29
  3162.           4.1.4. Message compression                                 30
  3163.       4.2. Transport                                                 32
  3164.           4.2.1. UDP usage                                           32
  3165.           4.2.2. TCP usage                                           32
  3166.   5. MASTER FILES                                                    33
  3167.       5.1. Format                                                    33
  3168.       5.2. Use of master files to define zones                       35
  3169.       5.3. Master file example                                       36
  3170.   6. NAME SERVER IMPLEMENTATION                                      37
  3171.       6.1. Architecture                                              37
  3172.           6.1.1. Control                                             37
  3173.           6.1.2. Database                                            37
  3174.           6.1.3. Time                                                39
  3175.       6.2. Standard query processing                                 39
  3176.       6.3. Zone refresh and reload processing                        39
  3177.       6.4. Inverse queries (Optional)                                40
  3178.           6.4.1. The contents of inverse queries and responses       40
  3179.           6.4.2. Inverse query and response example                  41
  3180.           6.4.3. Inverse query processing                            42
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187. Mockapetris                                                     [Page 2]
  3188.  
  3189. RFC 1035        Domain Implementation and Specification    November 1987
  3190.  
  3191.  
  3192.       6.5. Completion queries and responses                          42
  3193.   7. RESOLVER IMPLEMENTATION                                         43
  3194.       7.1. Transforming a user request into a query                  43
  3195.       7.2. Sending the queries                                       44
  3196.       7.3. Processing responses                                      46
  3197.       7.4. Using the cache                                           47
  3198.   8. MAIL SUPPORT                                                    47
  3199.       8.1. Mail exchange binding                                     48
  3200.       8.2. Mailbox binding (Experimental)                            48
  3201.   9. REFERENCES and BIBLIOGRAPHY                                     50
  3202.   Index                                                              54
  3203.  
  3204. 2. INTRODUCTION
  3205.  
  3206. 2.1. Overview
  3207.  
  3208. The goal of domain names is to provide a mechanism for naming resources
  3209. in such a way that the names are usable in different hosts, networks,
  3210. protocol families, internets, and administrative organizations.
  3211.  
  3212. From the user's point of view, domain names are useful as arguments to a
  3213. local agent, called a resolver, which retrieves information associated
  3214. with the domain name.  Thus a user might ask for the host address or
  3215. mail information associated with a particular domain name.  To enable
  3216. the user to request a particular type of information, an appropriate
  3217. query type is passed to the resolver with the domain name.  To the user,
  3218. the domain tree is a single information space; the resolver is
  3219. responsible for hiding the distribution of data among name servers from
  3220. the user.
  3221.  
  3222. From the resolver's point of view, the database that makes up the domain
  3223. space is distributed among various name servers.  Different parts of the
  3224. domain space are stored in different name servers, although a particular
  3225. data item will be stored redundantly in two or more name servers.  The
  3226. resolver starts with knowledge of at least one name server.  When the
  3227. resolver processes a user query it asks a known name server for the
  3228. information; in return, the resolver either receives the desired
  3229. information or a referral to another name server.  Using these
  3230. referrals, resolvers learn the identities and contents of other name
  3231. servers.  Resolvers are responsible for dealing with the distribution of
  3232. the domain space and dealing with the effects of name server failure by
  3233. consulting redundant databases in other servers.
  3234.  
  3235. Name servers manage two kinds of data.  The first kind of data held in
  3236. sets called zones; each zone is the complete database for a particular
  3237. "pruned" subtree of the domain space.  This data is called
  3238. authoritative.  A name server periodically checks to make sure that its
  3239. zones are up to date, and if not, obtains a new copy of updated zones
  3240.  
  3241.  
  3242.  
  3243. Mockapetris                                                     [Page 3]
  3244.  
  3245. RFC 1035        Domain Implementation and Specification    November 1987
  3246.  
  3247.  
  3248. from master files stored locally or in another name server.  The second
  3249. kind of data is cached data which was acquired by a local resolver.
  3250. This data may be incomplete, but improves the performance of the
  3251. retrieval process when non-local data is repeatedly accessed.  Cached
  3252. data is eventually discarded by a timeout mechanism.
  3253.  
  3254. This functional structure isolates the problems of user interface,
  3255. failure recovery, and distribution in the resolvers and isolates the
  3256. database update and refresh problems in the name servers.
  3257.  
  3258. 2.2. Common configurations
  3259.  
  3260. A host can participate in the domain name system in a number of ways,
  3261. depending on whether the host runs programs that retrieve information
  3262. from the domain system, name servers that answer queries from other
  3263. hosts, or various combinations of both functions.  The simplest, and
  3264. perhaps most typical, configuration is shown below:
  3265.  
  3266.                  Local Host                        |  Foreign
  3267.                                                    |
  3268.     +---------+               +----------+         |  +--------+
  3269.     |         | user queries  |          |queries  |  |        |
  3270.     |  User   |-------------->|          |---------|->|Foreign |
  3271.     | Program |               | Resolver |         |  |  Name  |
  3272.     |         |<--------------|          |<--------|--| Server |
  3273.     |         | user responses|          |responses|  |        |
  3274.     +---------+               +----------+         |  +--------+
  3275.                                 |     A            |
  3276.                 cache additions |     | references |
  3277.                                 V     |            |
  3278.                               +----------+         |
  3279.                               |  cache   |         |
  3280.                               +----------+         |
  3281.  
  3282. User programs interact with the domain name space through resolvers; the
  3283. format of user queries and user responses is specific to the host and
  3284. its operating system.  User queries will typically be operating system
  3285. calls, and the resolver and its cache will be part of the host operating
  3286. system.  Less capable hosts may choose to implement the resolver as a
  3287. subroutine to be linked in with every program that needs its services.
  3288. Resolvers answer user queries with information they acquire via queries
  3289. to foreign name servers and the local cache.
  3290.  
  3291. Note that the resolver may have to make several queries to several
  3292. different foreign name servers to answer a particular user query, and
  3293. hence the resolution of a user query may involve several network
  3294. accesses and an arbitrary amount of time.  The queries to foreign name
  3295. servers and the corresponding responses have a standard format described
  3296.  
  3297.  
  3298.  
  3299. Mockapetris                                                     [Page 4]
  3300.  
  3301. RFC 1035        Domain Implementation and Specification    November 1987
  3302.  
  3303.  
  3304. in this memo, and may be datagrams.
  3305.  
  3306. Depending on its capabilities, a name server could be a stand alone
  3307. program on a dedicated machine or a process or processes on a large
  3308. timeshared host.  A simple configuration might be:
  3309.  
  3310.                  Local Host                        |  Foreign
  3311.                                                    |
  3312.       +---------+                                  |
  3313.      /         /|                                  |
  3314.     +---------+ |             +----------+         |  +--------+
  3315.     |         | |             |          |responses|  |        |
  3316.     |         | |             |   Name   |---------|->|Foreign |
  3317.     |  Master |-------------->|  Server  |         |  |Resolver|
  3318.     |  files  | |             |          |<--------|--|        |
  3319.     |         |/              |          | queries |  +--------+
  3320.     +---------+               +----------+         |
  3321.  
  3322. Here a primary name server acquires information about one or more zones
  3323. by reading master files from its local file system, and answers queries
  3324. about those zones that arrive from foreign resolvers.
  3325.  
  3326. The DNS requires that all zones be redundantly supported by more than
  3327. one name server.  Designated secondary servers can acquire zones and
  3328. check for updates from the primary server using the zone transfer
  3329. protocol of the DNS.  This configuration is shown below:
  3330.  
  3331.                  Local Host                        |  Foreign
  3332.                                                    |
  3333.       +---------+                                  |
  3334.      /         /|                                  |
  3335.     +---------+ |             +----------+         |  +--------+
  3336.     |         | |             |          |responses|  |        |
  3337.     |         | |             |   Name   |---------|->|Foreign |
  3338.     |  Master |-------------->|  Server  |         |  |Resolver|
  3339.     |  files  | |             |          |<--------|--|        |
  3340.     |         |/              |          | queries |  +--------+
  3341.     +---------+               +----------+         |
  3342.                                 A     |maintenance |  +--------+
  3343.                                 |     +------------|->|        |
  3344.                                 |      queries     |  |Foreign |
  3345.                                 |                  |  |  Name  |
  3346.                                 +------------------|--| Server |
  3347.                              maintenance responses |  +--------+
  3348.  
  3349. In this configuration, the name server periodically establishes a
  3350. virtual circuit to a foreign name server to acquire a copy of a zone or
  3351. to check that an existing copy has not changed.  The messages sent for
  3352.  
  3353.  
  3354.  
  3355. Mockapetris                                                     [Page 5]
  3356.  
  3357. RFC 1035        Domain Implementation and Specification    November 1987
  3358.  
  3359.  
  3360. these maintenance activities follow the same form as queries and
  3361. responses, but the message sequences are somewhat different.
  3362.  
  3363. The information flow in a host that supports all aspects of the domain
  3364. name system is shown below:
  3365.  
  3366.                  Local Host                        |  Foreign
  3367.                                                    |
  3368.     +---------+               +----------+         |  +--------+
  3369.     |         | user queries  |          |queries  |  |        |
  3370.     |  User   |-------------->|          |---------|->|Foreign |
  3371.     | Program |               | Resolver |         |  |  Name  |
  3372.     |         |<--------------|          |<--------|--| Server |
  3373.     |         | user responses|          |responses|  |        |
  3374.     +---------+               +----------+         |  +--------+
  3375.                                 |     A            |
  3376.                 cache additions |     | references |
  3377.                                 V     |            |
  3378.                               +----------+         |
  3379.                               |  Shared  |         |
  3380.                               | database |         |
  3381.                               +----------+         |
  3382.                                 A     |            |
  3383.       +---------+     refreshes |     | references |
  3384.      /         /|               |     V            |
  3385.     +---------+ |             +----------+         |  +--------+
  3386.     |         | |             |          |responses|  |        |
  3387.     |         | |             |   Name   |---------|->|Foreign |
  3388.     |  Master |-------------->|  Server  |         |  |Resolver|
  3389.     |  files  | |             |          |<--------|--|        |
  3390.     |         |/              |          | queries |  +--------+
  3391.     +---------+               +----------+         |
  3392.                                 A     |maintenance |  +--------+
  3393.                                 |     +------------|->|        |
  3394.                                 |      queries     |  |Foreign |
  3395.                                 |                  |  |  Name  |
  3396.                                 +------------------|--| Server |
  3397.                              maintenance responses |  +--------+
  3398.  
  3399. The shared database holds domain space data for the local name server
  3400. and resolver.  The contents of the shared database will typically be a
  3401. mixture of authoritative data maintained by the periodic refresh
  3402. operations of the name server and cached data from previous resolver
  3403. requests.  The structure of the domain data and the necessity for
  3404. synchronization between name servers and resolvers imply the general
  3405. characteristics of this database, but the actual format is up to the
  3406. local implementor.
  3407.  
  3408.  
  3409.  
  3410.  
  3411. Mockapetris                                                     [Page 6]
  3412.  
  3413. RFC 1035        Domain Implementation and Specification    November 1987
  3414.  
  3415.  
  3416. Information flow can also be tailored so that a group of hosts act
  3417. together to optimize activities.  Sometimes this is done to offload less
  3418. capable hosts so that they do not have to implement a full resolver.
  3419. This can be appropriate for PCs or hosts which want to minimize the
  3420. amount of new network code which is required.  This scheme can also
  3421. allow a group of hosts can share a small number of caches rather than
  3422. maintaining a large number of separate caches, on the premise that the
  3423. centralized caches will have a higher hit ratio.  In either case,
  3424. resolvers are replaced with stub resolvers which act as front ends to
  3425. resolvers located in a recursive server in one or more name servers
  3426. known to perform that service:
  3427.  
  3428.                    Local Hosts                     |  Foreign
  3429.                                                    |
  3430.     +---------+                                    |
  3431.     |         | responses                          |
  3432.     | Stub    |<--------------------+              |
  3433.     | Resolver|                     |              |
  3434.     |         |----------------+    |              |
  3435.     +---------+ recursive      |    |              |
  3436.                 queries        |    |              |
  3437.                                V    |              |
  3438.     +---------+ recursive     +----------+         |  +--------+
  3439.     |         | queries       |          |queries  |  |        |
  3440.     | Stub    |-------------->| Recursive|---------|->|Foreign |
  3441.     | Resolver|               | Server   |         |  |  Name  |
  3442.     |         |<--------------|          |<--------|--| Server |
  3443.     +---------+ responses     |          |responses|  |        |
  3444.                               +----------+         |  +--------+
  3445.                               |  Central |         |
  3446.                               |   cache  |         |
  3447.                               +----------+         |
  3448.  
  3449. In any case, note that domain components are always replicated for
  3450. reliability whenever possible.
  3451.  
  3452. 2.3. Conventions
  3453.  
  3454. The domain system has several conventions dealing with low-level, but
  3455. fundamental, issues.  While the implementor is free to violate these
  3456. conventions WITHIN HIS OWN SYSTEM, he must observe these conventions in
  3457. ALL behavior observed from other hosts.
  3458.  
  3459. 2.3.1. Preferred name syntax
  3460.  
  3461. The DNS specifications attempt to be as general as possible in the rules
  3462. for constructing domain names.  The idea is that the name of any
  3463. existing object can be expressed as a domain name with minimal changes.
  3464.  
  3465.  
  3466.  
  3467. Mockapetris                                                     [Page 7]
  3468.  
  3469. RFC 1035        Domain Implementation and Specification    November 1987
  3470.  
  3471.  
  3472. However, when assigning a domain name for an object, the prudent user
  3473. will select a name which satisfies both the rules of the domain system
  3474. and any existing rules for the object, whether these rules are published
  3475. or implied by existing programs.
  3476.  
  3477. For example, when naming a mail domain, the user should satisfy both the
  3478. rules of this memo and those in RFC-822.  When creating a new host name,
  3479. the old rules for HOSTS.TXT should be followed.  This avoids problems
  3480. when old software is converted to use domain names.
  3481.  
  3482. The following syntax will result in fewer problems with many
  3483.  
  3484. applications that use domain names (e.g., mail, TELNET).
  3485.  
  3486. <domain> ::= <subdomain> | " "
  3487.  
  3488. <subdomain> ::= <label> | <subdomain> "." <label>
  3489.  
  3490. <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
  3491.  
  3492. <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
  3493.  
  3494. <let-dig-hyp> ::= <let-dig> | "-"
  3495.  
  3496. <let-dig> ::= <letter> | <digit>
  3497.  
  3498. <letter> ::= any one of the 52 alphabetic characters A through Z in
  3499. upper case and a through z in lower case
  3500.  
  3501. <digit> ::= any one of the ten digits 0 through 9
  3502.  
  3503. Note that while upper and lower case letters are allowed in domain
  3504. names, no significance is attached to the case.  That is, two names with
  3505. the same spelling but different case are to be treated as if identical.
  3506.  
  3507. The labels must follow the rules for ARPANET host names.  They must
  3508. start with a letter, end with a letter or digit, and have as interior
  3509. characters only letters, digits, and hyphen.  There are also some
  3510. restrictions on the length.  Labels must be 63 characters or less.
  3511.  
  3512. For example, the following strings identify hosts in the Internet:
  3513.  
  3514. A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA
  3515.  
  3516. 2.3.2. Data Transmission Order
  3517.  
  3518. The order of transmission of the header and data described in this
  3519. document is resolved to the octet level.  Whenever a diagram shows a
  3520.  
  3521.  
  3522.  
  3523. Mockapetris                                                     [Page 8]
  3524.  
  3525. RFC 1035        Domain Implementation and Specification    November 1987
  3526.  
  3527.  
  3528. group of octets, the order of transmission of those octets is the normal
  3529. order in which they are read in English.  For example, in the following
  3530. diagram, the octets are transmitted in the order they are numbered.
  3531.  
  3532.      0                   1
  3533.      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  3534.     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3535.     |       1       |       2       |
  3536.     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3537.     |       3       |       4       |
  3538.     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3539.     |       5       |       6       |
  3540.     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3541.  
  3542. Whenever an octet represents a numeric quantity, the left most bit in
  3543. the diagram is the high order or most significant bit.  That is, the bit
  3544. labeled 0 is the most significant bit.  For example, the following
  3545. diagram represents the value 170 (decimal).
  3546.  
  3547.      0 1 2 3 4 5 6 7
  3548.     +-+-+-+-+-+-+-+-+
  3549.     |1 0 1 0 1 0 1 0|
  3550.     +-+-+-+-+-+-+-+-+
  3551.  
  3552. Similarly, whenever a multi-octet field represents a numeric quantity
  3553. the left most bit of the whole field is the most significant bit.  When
  3554. a multi-octet quantity is transmitted the most significant octet is
  3555. transmitted first.
  3556.  
  3557. 2.3.3. Character Case
  3558.  
  3559. For all parts of the DNS that are part of the official protocol, all
  3560. comparisons between character strings (e.g., labels, domain names, etc.)
  3561. are done in a case-insensitive manner.  At present, this rule is in
  3562. force throughout the domain system without exception.  However, future
  3563. additions beyond current usage may need to use the full binary octet
  3564. capabilities in names, so attempts to store domain names in 7-bit ASCII
  3565. or use of special bytes to terminate labels, etc., should be avoided.
  3566.  
  3567. When data enters the domain system, its original case should be
  3568. preserved whenever possible.  In certain circumstances this cannot be
  3569. done.  For example, if two RRs are stored in a database, one at x.y and
  3570. one at X.Y, they are actually stored at the same place in the database,
  3571. and hence only one casing would be preserved.  The basic rule is that
  3572. case can be discarded only when data is used to define structure in a
  3573. database, and two names are identical when compared in a case
  3574. insensitive manner.
  3575.  
  3576.  
  3577.  
  3578.  
  3579. Mockapetris                                                     [Page 9]
  3580.  
  3581. RFC 1035        Domain Implementation and Specification    November 1987
  3582.  
  3583.  
  3584. Loss of case sensitive data must be minimized.  Thus while data for x.y
  3585. and X.Y may both be stored under a single location x.y or X.Y, data for
  3586. a.x and B.X would never be stored under A.x, A.X, b.x, or b.X.  In
  3587. general, this preserves the case of the first label of a domain name,
  3588. but forces standardization of interior node labels.
  3589.  
  3590. Systems administrators who enter data into the domain database should
  3591. take care to represent the data they supply to the domain system in a
  3592. case-consistent manner if their system is case-sensitive.  The data
  3593. distribution system in the domain system will ensure that consistent
  3594. representations are preserved.
  3595.  
  3596. 2.3.4. Size limits
  3597.  
  3598. Various objects and parameters in the DNS have size limits.  They are
  3599. listed below.  Some could be easily changed, others are more
  3600. fundamental.
  3601.  
  3602. labels          63 octets or less
  3603.  
  3604. names           255 octets or less
  3605.  
  3606. TTL             positive values of a signed 32 bit number.
  3607.  
  3608. UDP messages    512 octets or less
  3609.  
  3610. 3. DOMAIN NAME SPACE AND RR DEFINITIONS
  3611.  
  3612. 3.1. Name space definitions
  3613.  
  3614. Domain names in messages are expressed in terms of a sequence of labels.
  3615. Each label is represented as a one octet length field followed by that
  3616. number of octets.  Since every domain name ends with the null label of
  3617. the root, a domain name is terminated by a length byte of zero.  The
  3618. high order two bits of every length octet must be zero, and the
  3619. remaining six bits of the length field limit the label to 63 octets or
  3620. less.
  3621.  
  3622. To simplify implementations, the total length of a domain name (i.e.,
  3623. label octets and label length octets) is restricted to 255 octets or
  3624. less.
  3625.  
  3626. Although labels can contain any 8 bit values in octets that make up a
  3627. label, it is strongly recommended that labels follow the preferred
  3628. syntax described elsewhere in this memo, which is compatible with
  3629. existing host naming conventions.  Name servers and resolvers must
  3630. compare labels in a case-insensitive manner (i.e., A=a), assuming ASCII
  3631. with zero parity.  Non-alphabetic codes must match exactly.
  3632.  
  3633.  
  3634.  
  3635. Mockapetris                                                    [Page 10]
  3636.  
  3637. RFC 1035        Domain Implementation and Specification    November 1987
  3638.  
  3639.  
  3640. 3.2. RR definitions
  3641.  
  3642. 3.2.1. Format
  3643.  
  3644. All RRs have the same top level format shown below:
  3645.  
  3646.                                     1  1  1  1  1  1
  3647.       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  3648.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3649.     |                                               |
  3650.     /                                               /
  3651.     /                      NAME                     /
  3652.     |                                               |
  3653.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3654.     |                      TYPE                     |
  3655.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3656.     |                     CLASS                     |
  3657.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3658.     |                      TTL                      |
  3659.     |                                               |
  3660.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3661.     |                   RDLENGTH                    |
  3662.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
  3663.     /                     RDATA                     /
  3664.     /                                               /
  3665.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3666.  
  3667.  
  3668. where:
  3669.  
  3670. NAME            an owner name, i.e., the name of the node to which this
  3671.                 resource record pertains.
  3672.  
  3673. TYPE            two octets containing one of the RR TYPE codes.
  3674.  
  3675. CLASS           two octets containing one of the RR CLASS codes.
  3676.  
  3677. TTL             a 32 bit signed integer that specifies the time interval
  3678.                 that the resource record may be cached before the source
  3679.                 of the information should again be consulted.  Zero
  3680.                 values are interpreted to mean that the RR can only be
  3681.                 used for the transaction in progress, and should not be
  3682.                 cached.  For example, SOA records are always distributed
  3683.                 with a zero TTL to prohibit caching.  Zero values can
  3684.                 also be used for extremely volatile data.
  3685.  
  3686. RDLENGTH        an unsigned 16 bit integer that specifies the length in
  3687.                 octets of the RDATA field.
  3688.  
  3689.  
  3690.  
  3691. Mockapetris                                                    [Page 11]
  3692.  
  3693. RFC 1035        Domain Implementation and Specification    November 1987
  3694.  
  3695.  
  3696. RDATA           a variable length string of octets that describes the
  3697.                 resource.  The format of this information varies
  3698.                 according to the TYPE and CLASS of the resource record.
  3699.  
  3700. 3.2.2. TYPE values
  3701.  
  3702. TYPE fields are used in resource records.  Note that these types are a
  3703. subset of QTYPEs.
  3704.  
  3705. TYPE            value and meaning
  3706.  
  3707. A               1 a host address
  3708.  
  3709. NS              2 an authoritative name server
  3710.  
  3711. MD              3 a mail destination (Obsolete - use MX)
  3712.  
  3713. MF              4 a mail forwarder (Obsolete - use MX)
  3714.  
  3715. CNAME           5 the canonical name for an alias
  3716.  
  3717. SOA             6 marks the start of a zone of authority
  3718.  
  3719. MB              7 a mailbox domain name (EXPERIMENTAL)
  3720.  
  3721. MG              8 a mail group member (EXPERIMENTAL)
  3722.  
  3723. MR              9 a mail rename domain name (EXPERIMENTAL)
  3724.  
  3725. NULL            10 a null RR (EXPERIMENTAL)
  3726.  
  3727. WKS             11 a well known service description
  3728.  
  3729. PTR             12 a domain name pointer
  3730.  
  3731. HINFO           13 host information
  3732.  
  3733. MINFO           14 mailbox or mail list information
  3734.  
  3735. MX              15 mail exchange
  3736.  
  3737. TXT             16 text strings
  3738.  
  3739. 3.2.3. QTYPE values
  3740.  
  3741. QTYPE fields appear in the question part of a query.  QTYPES are a
  3742. superset of TYPEs, hence all TYPEs are valid QTYPEs.  In addition, the
  3743. following QTYPEs are defined:
  3744.  
  3745.  
  3746.  
  3747. Mockapetris                                                    [Page 12]
  3748.  
  3749. RFC 1035        Domain Implementation and Specification    November 1987
  3750.  
  3751.  
  3752. AXFR            252 A request for a transfer of an entire zone
  3753.  
  3754. MAILB           253 A request for mailbox-related records (MB, MG or MR)
  3755.  
  3756. MAILA           254 A request for mail agent RRs (Obsolete - see MX)
  3757.  
  3758. *               255 A request for all records
  3759.  
  3760. 3.2.4. CLASS values
  3761.  
  3762. CLASS fields appear in resource records.  The following CLASS mnemonics
  3763. and values are defined:
  3764.  
  3765. IN              1 the Internet
  3766.  
  3767. CS              2 the CSNET class (Obsolete - used only for examples in
  3768.                 some obsolete RFCs)
  3769.  
  3770. CH              3 the CHAOS class
  3771.  
  3772. HS              4 Hesiod [Dyer 87]
  3773.  
  3774. 3.2.5. QCLASS values
  3775.  
  3776. QCLASS fields appear in the question section of a query.  QCLASS values
  3777. are a superset of CLASS values; every CLASS is a valid QCLASS.  In
  3778. addition to CLASS values, the following QCLASSes are defined:
  3779.  
  3780. *               255 any class
  3781.  
  3782. 3.3. Standard RRs
  3783.  
  3784. The following RR definitions are expected to occur, at least
  3785. potentially, in all classes.  In particular, NS, SOA, CNAME, and PTR
  3786. will be used in all classes, and have the same format in all classes.
  3787. Because their RDATA format is known, all domain names in the RDATA
  3788. section of these RRs may be compressed.
  3789.  
  3790. <domain-name> is a domain name represented as a series of labels, and
  3791. terminated by a label with zero length.  <character-string> is a single
  3792. length octet followed by that number of characters.  <character-string>
  3793. is treated as binary information, and can be up to 256 characters in
  3794. length (including the length octet).
  3795.  
  3796.  
  3797.  
  3798.  
  3799.  
  3800.  
  3801.  
  3802.  
  3803. Mockapetris                                                    [Page 13]
  3804.  
  3805. RFC 1035        Domain Implementation and Specification    November 1987
  3806.  
  3807.  
  3808. 3.3.1. CNAME RDATA format
  3809.  
  3810.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3811.     /                     CNAME                     /
  3812.     /                                               /
  3813.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3814.  
  3815. where:
  3816.  
  3817. CNAME           A <domain-name> which specifies the canonical or primary
  3818.                 name for the owner.  The owner name is an alias.
  3819.  
  3820. CNAME RRs cause no additional section processing, but name servers may
  3821. choose to restart the query at the canonical name in certain cases.  See
  3822. the description of name server logic in [RFC-1034] for details.
  3823.  
  3824. 3.3.2. HINFO RDATA format
  3825.  
  3826.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3827.     /                      CPU                      /
  3828.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3829.     /                       OS                      /
  3830.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3831.  
  3832. where:
  3833.  
  3834. CPU             A <character-string> which specifies the CPU type.
  3835.  
  3836. OS              A <character-string> which specifies the operating
  3837.                 system type.
  3838.  
  3839. Standard values for CPU and OS can be found in [RFC-1010].
  3840.  
  3841. HINFO records are used to acquire general information about a host.  The
  3842. main use is for protocols such as FTP that can use special procedures
  3843. when talking between machines or operating systems of the same type.
  3844.  
  3845. 3.3.3. MB RDATA format (EXPERIMENTAL)
  3846.  
  3847.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3848.     /                   MADNAME                     /
  3849.     /                                               /
  3850.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3851.  
  3852. where:
  3853.  
  3854. MADNAME         A <domain-name> which specifies a host which has the
  3855.                 specified mailbox.
  3856.  
  3857.  
  3858.  
  3859. Mockapetris                                                    [Page 14]
  3860.  
  3861. RFC 1035        Domain Implementation and Specification    November 1987
  3862.  
  3863.  
  3864. MB records cause additional section processing which looks up an A type
  3865. RRs corresponding to MADNAME.
  3866.  
  3867. 3.3.4. MD RDATA format (Obsolete)
  3868.  
  3869.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3870.     /                   MADNAME                     /
  3871.     /                                               /
  3872.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3873.  
  3874. where:
  3875.  
  3876. MADNAME         A <domain-name> which specifies a host which has a mail
  3877.                 agent for the domain which should be able to deliver
  3878.                 mail for the domain.
  3879.  
  3880. MD records cause additional section processing which looks up an A type
  3881. record corresponding to MADNAME.
  3882.  
  3883. MD is obsolete.  See the definition of MX and [RFC-974] for details of
  3884. the new scheme.  The recommended policy for dealing with MD RRs found in
  3885. a master file is to reject them, or to convert them to MX RRs with a
  3886. preference of 0.
  3887.  
  3888. 3.3.5. MF RDATA format (Obsolete)
  3889.  
  3890.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3891.     /                   MADNAME                     /
  3892.     /                                               /
  3893.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3894.  
  3895. where:
  3896.  
  3897. MADNAME         A <domain-name> which specifies a host which has a mail
  3898.                 agent for the domain which will accept mail for
  3899.                 forwarding to the domain.
  3900.  
  3901. MF records cause additional section processing which looks up an A type
  3902. record corresponding to MADNAME.
  3903.  
  3904. MF is obsolete.  See the definition of MX and [RFC-974] for details ofw
  3905. the new scheme.  The recommended policy for dealing with MD RRs found in
  3906. a master file is to reject them, or to convert them to MX RRs with a
  3907. preference of 10.
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913.  
  3914.  
  3915. Mockapetris                                                    [Page 15]
  3916.  
  3917. RFC 1035        Domain Implementation and Specification    November 1987
  3918.  
  3919.  
  3920. 3.3.6. MG RDATA format (EXPERIMENTAL)
  3921.  
  3922.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3923.     /                   MGMNAME                     /
  3924.     /                                               /
  3925.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3926.  
  3927. where:
  3928.  
  3929. MGMNAME         A <domain-name> which specifies a mailbox which is a
  3930.                 member of the mail group specified by the domain name.
  3931.  
  3932. MG records cause no additional section processing.
  3933.  
  3934. 3.3.7. MINFO RDATA format (EXPERIMENTAL)
  3935.  
  3936.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3937.     /                    RMAILBX                    /
  3938.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3939.     /                    EMAILBX                    /
  3940.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3941.  
  3942. where:
  3943.  
  3944. RMAILBX         A <domain-name> which specifies a mailbox which is
  3945.                 responsible for the mailing list or mailbox.  If this
  3946.                 domain name names the root, the owner of the MINFO RR is
  3947.                 responsible for itself.  Note that many existing mailing
  3948.                 lists use a mailbox X-request for the RMAILBX field of
  3949.                 mailing list X, e.g., Msgroup-request for Msgroup.  This
  3950.                 field provides a more general mechanism.
  3951.  
  3952.  
  3953. EMAILBX         A <domain-name> which specifies a mailbox which is to
  3954.                 receive error messages related to the mailing list or
  3955.                 mailbox specified by the owner of the MINFO RR (similar
  3956.                 to the ERRORS-TO: field which has been proposed).  If
  3957.                 this domain name names the root, errors should be
  3958.                 returned to the sender of the message.
  3959.  
  3960. MINFO records cause no additional section processing.  Although these
  3961. records can be associated with a simple mailbox, they are usually used
  3962. with a mailing list.
  3963.  
  3964.  
  3965.  
  3966.  
  3967.  
  3968.  
  3969.  
  3970.  
  3971. Mockapetris                                                    [Page 16]
  3972.  
  3973. RFC 1035        Domain Implementation and Specification    November 1987
  3974.  
  3975.  
  3976. 3.3.8. MR RDATA format (EXPERIMENTAL)
  3977.  
  3978.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3979.     /                   NEWNAME                     /
  3980.     /                                               /
  3981.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3982.  
  3983. where:
  3984.  
  3985. NEWNAME         A <domain-name> which specifies a mailbox which is the
  3986.                 proper rename of the specified mailbox.
  3987.  
  3988. MR records cause no additional section processing.  The main use for MR
  3989. is as a forwarding entry for a user who has moved to a different
  3990. mailbox.
  3991.  
  3992. 3.3.9. MX RDATA format
  3993.  
  3994.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3995.     |                  PREFERENCE                   |
  3996.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  3997.     /                   EXCHANGE                    /
  3998.     /                                               /
  3999.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4000.  
  4001. where:
  4002.  
  4003. PREFERENCE      A 16 bit integer which specifies the preference given to
  4004.                 this RR among others at the same owner.  Lower values
  4005.                 are preferred.
  4006.  
  4007. EXCHANGE        A <domain-name> which specifies a host willing to act as
  4008.                 a mail exchange for the owner name.
  4009.  
  4010. MX records cause type A additional section processing for the host
  4011. specified by EXCHANGE.  The use of MX RRs is explained in detail in
  4012. [RFC-974].
  4013.  
  4014. 3.3.10. NULL RDATA format (EXPERIMENTAL)
  4015.  
  4016.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4017.     /                  <anything>                   /
  4018.     /                                               /
  4019.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4020.  
  4021. Anything at all may be in the RDATA field so long as it is 65535 octets
  4022. or less.
  4023.  
  4024.  
  4025.  
  4026.  
  4027. Mockapetris                                                    [Page 17]
  4028.  
  4029. RFC 1035        Domain Implementation and Specification    November 1987
  4030.  
  4031.  
  4032. NULL records cause no additional section processing.  NULL RRs are not
  4033. allowed in master files.  NULLs are used as placeholders in some
  4034. experimental extensions of the DNS.
  4035.  
  4036. 3.3.11. NS RDATA format
  4037.  
  4038.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4039.     /                   NSDNAME                     /
  4040.     /                                               /
  4041.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4042.  
  4043. where:
  4044.  
  4045. NSDNAME         A <domain-name> which specifies a host which should be
  4046.                 authoritative for the specified class and domain.
  4047.  
  4048. NS records cause both the usual additional section processing to locate
  4049. a type A record, and, when used in a referral, a special search of the
  4050. zone in which they reside for glue information.
  4051.  
  4052. The NS RR states that the named host should be expected to have a zone
  4053. starting at owner name of the specified class.  Note that the class may
  4054. not indicate the protocol family which should be used to communicate
  4055. with the host, although it is typically a strong hint.  For example,
  4056. hosts which are name servers for either Internet (IN) or Hesiod (HS)
  4057. class information are normally queried using IN class protocols.
  4058.  
  4059. 3.3.12. PTR RDATA format
  4060.  
  4061.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4062.     /                   PTRDNAME                    /
  4063.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4064.  
  4065. where:
  4066.  
  4067. PTRDNAME        A <domain-name> which points to some location in the
  4068.                 domain name space.
  4069.  
  4070. PTR records cause no additional section processing.  These RRs are used
  4071. in special domains to point to some other location in the domain space.
  4072. These records are simple data, and don't imply any special processing
  4073. similar to that performed by CNAME, which identifies aliases.  See the
  4074. description of the IN-ADDR.ARPA domain for an example.
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081.  
  4082.  
  4083. Mockapetris                                                    [Page 18]
  4084.  
  4085. RFC 1035        Domain Implementation and Specification    November 1987
  4086.  
  4087.  
  4088. 3.3.13. SOA RDATA format
  4089.  
  4090.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4091.     /                     MNAME                     /
  4092.     /                                               /
  4093.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4094.     /                     RNAME                     /
  4095.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4096.     |                    SERIAL                     |
  4097.     |                                               |
  4098.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4099.     |                    REFRESH                    |
  4100.     |                                               |
  4101.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4102.     |                     RETRY                     |
  4103.     |                                               |
  4104.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4105.     |                    EXPIRE                     |
  4106.     |                                               |
  4107.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4108.     |                    MINIMUM                    |
  4109.     |                                               |
  4110.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4111.  
  4112. where:
  4113.  
  4114. MNAME           The <domain-name> of the name server that was the
  4115.                 original or primary source of data for this zone.
  4116.  
  4117. RNAME           A <domain-name> which specifies the mailbox of the
  4118.                 person responsible for this zone.
  4119.  
  4120. SERIAL          The unsigned 32 bit version number of the original copy
  4121.                 of the zone.  Zone transfers preserve this value.  This
  4122.                 value wraps and should be compared using sequence space
  4123.                 arithmetic.
  4124.  
  4125. REFRESH         A 32 bit time interval before the zone should be
  4126.                 refreshed.
  4127.  
  4128. RETRY           A 32 bit time interval that should elapse before a
  4129.                 failed refresh should be retried.
  4130.  
  4131. EXPIRE          A 32 bit time value that specifies the upper limit on
  4132.                 the time interval that can elapse before the zone is no
  4133.                 longer authoritative.
  4134.  
  4135.  
  4136.  
  4137.  
  4138.  
  4139. Mockapetris                                                    [Page 19]
  4140.  
  4141. RFC 1035        Domain Implementation and Specification    November 1987
  4142.  
  4143.  
  4144. MINIMUM         The unsigned 32 bit minimum TTL field that should be
  4145.                 exported with any RR from this zone.
  4146.  
  4147. SOA records cause no additional section processing.
  4148.  
  4149. All times are in units of seconds.
  4150.  
  4151. Most of these fields are pertinent only for name server maintenance
  4152. operations.  However, MINIMUM is used in all query operations that
  4153. retrieve RRs from a zone.  Whenever a RR is sent in a response to a
  4154. query, the TTL field is set to the maximum of the TTL field from the RR
  4155. and the MINIMUM field in the appropriate SOA.  Thus MINIMUM is a lower
  4156. bound on the TTL field for all RRs in a zone.  Note that this use of
  4157. MINIMUM should occur when the RRs are copied into the response and not
  4158. when the zone is loaded from a master file or via a zone transfer.  The
  4159. reason for this provison is to allow future dynamic update facilities to
  4160. change the SOA RR with known semantics.
  4161.  
  4162.  
  4163. 3.3.14. TXT RDATA format
  4164.  
  4165.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4166.     /                   TXT-DATA                    /
  4167.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4168.  
  4169. where:
  4170.  
  4171. TXT-DATA        One or more <character-string>s.
  4172.  
  4173. TXT RRs are used to hold descriptive text.  The semantics of the text
  4174. depends on the domain where it is found.
  4175.  
  4176. 3.4. Internet specific RRs
  4177.  
  4178. 3.4.1. A RDATA format
  4179.  
  4180.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4181.     |                    ADDRESS                    |
  4182.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4183.  
  4184. where:
  4185.  
  4186. ADDRESS         A 32 bit Internet address.
  4187.  
  4188. Hosts that have multiple Internet addresses will have multiple A
  4189. records.
  4190.  
  4191.  
  4192.  
  4193.  
  4194.  
  4195. Mockapetris                                                    [Page 20]
  4196.  
  4197. RFC 1035        Domain Implementation and Specification    November 1987
  4198.  
  4199.  
  4200. A records cause no additional section processing.  The RDATA section of
  4201. an A line in a master file is an Internet address expressed as four
  4202. decimal numbers separated by dots without any imbedded spaces (e.g.,
  4203. "10.2.0.52" or "192.0.5.6").
  4204.  
  4205. 3.4.2. WKS RDATA format
  4206.  
  4207.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4208.     |                    ADDRESS                    |
  4209.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4210.     |       PROTOCOL        |                       |
  4211.     +--+--+--+--+--+--+--+--+                       |
  4212.     |                                               |
  4213.     /                   <BIT MAP>                   /
  4214.     /                                               /
  4215.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4216.  
  4217. where:
  4218.  
  4219. ADDRESS         An 32 bit Internet address
  4220.  
  4221. PROTOCOL        An 8 bit IP protocol number
  4222.  
  4223. <BIT MAP>       A variable length bit map.  The bit map must be a
  4224.                 multiple of 8 bits long.
  4225.  
  4226. The WKS record is used to describe the well known services supported by
  4227. a particular protocol on a particular internet address.  The PROTOCOL
  4228. field specifies an IP protocol number, and the bit map has one bit per
  4229. port of the specified protocol.  The first bit corresponds to port 0,
  4230. the second to port 1, etc.  If the bit map does not include a bit for a
  4231. protocol of interest, that bit is assumed zero.  The appropriate values
  4232. and mnemonics for ports and protocols are specified in [RFC-1010].
  4233.  
  4234. For example, if PROTOCOL=TCP (6), the 26th bit corresponds to TCP port
  4235. 25 (SMTP).  If this bit is set, a SMTP server should be listening on TCP
  4236. port 25; if zero, SMTP service is not supported on the specified
  4237. address.
  4238.  
  4239. The purpose of WKS RRs is to provide availability information for
  4240. servers for TCP and UDP.  If a server supports both TCP and UDP, or has
  4241. multiple Internet addresses, then multiple WKS RRs are used.
  4242.  
  4243. WKS RRs cause no additional section processing.
  4244.  
  4245. In master files, both ports and protocols are expressed using mnemonics
  4246. or decimal numbers.
  4247.  
  4248.  
  4249.  
  4250.  
  4251. Mockapetris                                                    [Page 21]
  4252.  
  4253. RFC 1035        Domain Implementation and Specification    November 1987
  4254.  
  4255.  
  4256. 3.5. IN-ADDR.ARPA domain
  4257.  
  4258. The Internet uses a special domain to support gateway location and
  4259. Internet address to host mapping.  Other classes may employ a similar
  4260. strategy in other domains.  The intent of this domain is to provide a
  4261. guaranteed method to perform host address to host name mapping, and to
  4262. facilitate queries to locate all gateways on a particular network in the
  4263. Internet.
  4264.  
  4265. Note that both of these services are similar to functions that could be
  4266. performed by inverse queries; the difference is that this part of the
  4267. domain name space is structured according to address, and hence can
  4268. guarantee that the appropriate data can be located without an exhaustive
  4269. search of the domain space.
  4270.  
  4271. The domain begins at IN-ADDR.ARPA and has a substructure which follows
  4272. the Internet addressing structure.
  4273.  
  4274. Domain names in the IN-ADDR.ARPA domain are defined to have up to four
  4275. labels in addition to the IN-ADDR.ARPA suffix.  Each label represents
  4276. one octet of an Internet address, and is expressed as a character string
  4277. for a decimal value in the range 0-255 (with leading zeros omitted
  4278. except in the case of a zero octet which is represented by a single
  4279. zero).
  4280.  
  4281. Host addresses are represented by domain names that have all four labels
  4282. specified.  Thus data for Internet address 10.2.0.52 is located at
  4283. domain name 52.0.2.10.IN-ADDR.ARPA.  The reversal, though awkward to
  4284. read, allows zones to be delegated which are exactly one network of
  4285. address space.  For example, 10.IN-ADDR.ARPA can be a zone containing
  4286. data for the ARPANET, while 26.IN-ADDR.ARPA can be a separate zone for
  4287. MILNET.  Address nodes are used to hold pointers to primary host names
  4288. in the normal domain space.
  4289.  
  4290. Network numbers correspond to some non-terminal nodes at various depths
  4291. in the IN-ADDR.ARPA domain, since Internet network numbers are either 1,
  4292. 2, or 3 octets.  Network nodes are used to hold pointers to the primary
  4293. host names of gateways attached to that network.  Since a gateway is, by
  4294. definition, on more than one network, it will typically have two or more
  4295. network nodes which point at it.  Gateways will also have host level
  4296. pointers at their fully qualified addresses.
  4297.  
  4298. Both the gateway pointers at network nodes and the normal host pointers
  4299. at full address nodes use the PTR RR to point back to the primary domain
  4300. names of the corresponding hosts.
  4301.  
  4302. For example, the IN-ADDR.ARPA domain will contain information about the
  4303. ISI gateway between net 10 and 26, an MIT gateway from net 10 to MIT's
  4304.  
  4305.  
  4306.  
  4307. Mockapetris                                                    [Page 22]
  4308.  
  4309. RFC 1035        Domain Implementation and Specification    November 1987
  4310.  
  4311.  
  4312. net 18, and hosts A.ISI.EDU and MULTICS.MIT.EDU.  Assuming that ISI
  4313. gateway has addresses 10.2.0.22 and 26.0.0.103, and a name MILNET-
  4314. GW.ISI.EDU, and the MIT gateway has addresses 10.0.0.77 and 18.10.0.4
  4315. and a name GW.LCS.MIT.EDU, the domain database would contain:
  4316.  
  4317.     10.IN-ADDR.ARPA.           PTR MILNET-GW.ISI.EDU.
  4318.     10.IN-ADDR.ARPA.           PTR GW.LCS.MIT.EDU.
  4319.     18.IN-ADDR.ARPA.           PTR GW.LCS.MIT.EDU.
  4320.     26.IN-ADDR.ARPA.           PTR MILNET-GW.ISI.EDU.
  4321.     22.0.2.10.IN-ADDR.ARPA.    PTR MILNET-GW.ISI.EDU.
  4322.     103.0.0.26.IN-ADDR.ARPA.   PTR MILNET-GW.ISI.EDU.
  4323.     77.0.0.10.IN-ADDR.ARPA.    PTR GW.LCS.MIT.EDU.
  4324.     4.0.10.18.IN-ADDR.ARPA.    PTR GW.LCS.MIT.EDU.
  4325.     103.0.3.26.IN-ADDR.ARPA.   PTR A.ISI.EDU.
  4326.     6.0.0.10.IN-ADDR.ARPA.     PTR MULTICS.MIT.EDU.
  4327.  
  4328. Thus a program which wanted to locate gateways on net 10 would originate
  4329. a query of the form QTYPE=PTR, QCLASS=IN, QNAME=10.IN-ADDR.ARPA.  It
  4330. would receive two RRs in response:
  4331.  
  4332.     10.IN-ADDR.ARPA.           PTR MILNET-GW.ISI.EDU.
  4333.     10.IN-ADDR.ARPA.           PTR GW.LCS.MIT.EDU.
  4334.  
  4335. The program could then originate QTYPE=A, QCLASS=IN queries for MILNET-
  4336. GW.ISI.EDU. and GW.LCS.MIT.EDU. to discover the Internet addresses of
  4337. these gateways.
  4338.  
  4339. A resolver which wanted to find the host name corresponding to Internet
  4340. host address 10.0.0.6 would pursue a query of the form QTYPE=PTR,
  4341. QCLASS=IN, QNAME=6.0.0.10.IN-ADDR.ARPA, and would receive:
  4342.  
  4343.     6.0.0.10.IN-ADDR.ARPA.     PTR MULTICS.MIT.EDU.
  4344.  
  4345. Several cautions apply to the use of these services:
  4346.    - Since the IN-ADDR.ARPA special domain and the normal domain
  4347.      for a particular host or gateway will be in different zones,
  4348.      the possibility exists that that the data may be inconsistent.
  4349.  
  4350.    - Gateways will often have two names in separate domains, only
  4351.      one of which can be primary.
  4352.  
  4353.    - Systems that use the domain database to initialize their
  4354.      routing tables must start with enough gateway information to
  4355.      guarantee that they can access the appropriate name server.
  4356.  
  4357.    - The gateway data only reflects the existence of a gateway in a
  4358.      manner equivalent to the current HOSTS.TXT file.  It doesn't
  4359.      replace the dynamic availability information from GGP or EGP.
  4360.  
  4361.  
  4362.  
  4363. Mockapetris                                                    [Page 23]
  4364.  
  4365. RFC 1035        Domain Implementation and Specification    November 1987
  4366.  
  4367.  
  4368. 3.6. Defining new types, classes, and special namespaces
  4369.  
  4370. The previously defined types and classes are the ones in use as of the
  4371. date of this memo.  New definitions should be expected.  This section
  4372. makes some recommendations to designers considering additions to the
  4373. existing facilities.  The mailing list NAMEDROPPERS@SRI-NIC.ARPA is the
  4374. forum where general discussion of design issues takes place.
  4375.  
  4376. In general, a new type is appropriate when new information is to be
  4377. added to the database about an existing object, or we need new data
  4378. formats for some totally new object.  Designers should attempt to define
  4379. types and their RDATA formats that are generally applicable to all
  4380. classes, and which avoid duplication of information.  New classes are
  4381. appropriate when the DNS is to be used for a new protocol, etc which
  4382. requires new class-specific data formats, or when a copy of the existing
  4383. name space is desired, but a separate management domain is necessary.
  4384.  
  4385. New types and classes need mnemonics for master files; the format of the
  4386. master files requires that the mnemonics for type and class be disjoint.
  4387.  
  4388. TYPE and CLASS values must be a proper subset of QTYPEs and QCLASSes
  4389. respectively.
  4390.  
  4391. The present system uses multiple RRs to represent multiple values of a
  4392. type rather than storing multiple values in the RDATA section of a
  4393. single RR.  This is less efficient for most applications, but does keep
  4394. RRs shorter.  The multiple RRs assumption is incorporated in some
  4395. experimental work on dynamic update methods.
  4396.  
  4397. The present system attempts to minimize the duplication of data in the
  4398. database in order to insure consistency.  Thus, in order to find the
  4399. address of the host for a mail exchange, you map the mail domain name to
  4400. a host name, then the host name to addresses, rather than a direct
  4401. mapping to host address.  This approach is preferred because it avoids
  4402. the opportunity for inconsistency.
  4403.  
  4404. In defining a new type of data, multiple RR types should not be used to
  4405. create an ordering between entries or express different formats for
  4406. equivalent bindings, instead this information should be carried in the
  4407. body of the RR and a single type used.  This policy avoids problems with
  4408. caching multiple types and defining QTYPEs to match multiple types.
  4409.  
  4410. For example, the original form of mail exchange binding used two RR
  4411. types one to represent a "closer" exchange (MD) and one to represent a
  4412. "less close" exchange (MF).  The difficulty is that the presence of one
  4413. RR type in a cache doesn't convey any information about the other
  4414. because the query which acquired the cached information might have used
  4415. a QTYPE of MF, MD, or MAILA (which matched both).  The redesigned
  4416.  
  4417.  
  4418.  
  4419. Mockapetris                                                    [Page 24]
  4420.  
  4421. RFC 1035        Domain Implementation and Specification    November 1987
  4422.  
  4423.  
  4424. service used a single type (MX) with a "preference" value in the RDATA
  4425. section which can order different RRs.  However, if any MX RRs are found
  4426. in the cache, then all should be there.
  4427.  
  4428. 4. MESSAGES
  4429.  
  4430. 4.1. Format
  4431.  
  4432. All communications inside of the domain protocol are carried in a single
  4433. format called a message.  The top level format of message is divided
  4434. into 5 sections (some of which are empty in certain cases) shown below:
  4435.  
  4436.     +---------------------+
  4437.     |        Header       |
  4438.     +---------------------+
  4439.     |       Question      | the question for the name server
  4440.     +---------------------+
  4441.     |        Answer       | RRs answering the question
  4442.     +---------------------+
  4443.     |      Authority      | RRs pointing toward an authority
  4444.     +---------------------+
  4445.     |      Additional     | RRs holding additional information
  4446.     +---------------------+
  4447.  
  4448. The header section is always present.  The header includes fields that
  4449. specify which of the remaining sections are present, and also specify
  4450. whether the message is a query or a response, a standard query or some
  4451. other opcode, etc.
  4452.  
  4453. The names of the sections after the header are derived from their use in
  4454. standard queries.  The question section contains fields that describe a
  4455. question to a name server.  These fields are a query type (QTYPE), a
  4456. query class (QCLASS), and a query domain name (QNAME).  The last three
  4457. sections have the same format: a possibly empty list of concatenated
  4458. resource records (RRs).  The answer section contains RRs that answer the
  4459. question; the authority section contains RRs that point toward an
  4460. authoritative name server; the additional records section contains RRs
  4461. which relate to the query, but are not strictly answers for the
  4462. question.
  4463.  
  4464.  
  4465.  
  4466.  
  4467.  
  4468.  
  4469.  
  4470.  
  4471.  
  4472.  
  4473.  
  4474.  
  4475. Mockapetris                                                    [Page 25]
  4476.  
  4477. RFC 1035        Domain Implementation and Specification    November 1987
  4478.  
  4479.  
  4480. 4.1.1. Header section format
  4481.  
  4482. The header contains the following fields:
  4483.  
  4484.                                     1  1  1  1  1  1
  4485.       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  4486.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4487.     |                      ID                       |
  4488.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4489.     |QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   |
  4490.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4491.     |                    QDCOUNT                    |
  4492.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4493.     |                    ANCOUNT                    |
  4494.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4495.     |                    NSCOUNT                    |
  4496.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4497.     |                    ARCOUNT                    |
  4498.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4499.  
  4500. where:
  4501.  
  4502. ID              A 16 bit identifier assigned by the program that
  4503.                 generates any kind of query.  This identifier is copied
  4504.                 the corresponding reply and can be used by the requester
  4505.                 to match up replies to outstanding queries.
  4506.  
  4507. QR              A one bit field that specifies whether this message is a
  4508.                 query (0), or a response (1).
  4509.  
  4510. OPCODE          A four bit field that specifies kind of query in this
  4511.                 message.  This value is set by the originator of a query
  4512.                 and copied into the response.  The values are:
  4513.  
  4514.                 0               a standard query (QUERY)
  4515.  
  4516.                 1               an inverse query (IQUERY)
  4517.  
  4518.                 2               a server status request (STATUS)
  4519.  
  4520.                 3-15            reserved for future use
  4521.  
  4522. AA              Authoritative Answer - this bit is valid in responses,
  4523.                 and specifies that the responding name server is an
  4524.                 authority for the domain name in question section.
  4525.  
  4526.                 Note that the contents of the answer section may have
  4527.                 multiple owner names because of aliases.  The AA bit
  4528.  
  4529.  
  4530.  
  4531. Mockapetris                                                    [Page 26]
  4532.  
  4533. RFC 1035        Domain Implementation and Specification    November 1987
  4534.  
  4535.  
  4536.                 corresponds to the name which matches the query name, or
  4537.                 the first owner name in the answer section.
  4538.  
  4539. TC              TrunCation - specifies that this message was truncated
  4540.                 due to length greater than that permitted on the
  4541.                 transmission channel.
  4542.  
  4543. RD              Recursion Desired - this bit may be set in a query and
  4544.                 is copied into the response.  If RD is set, it directs
  4545.                 the name server to pursue the query recursively.
  4546.                 Recursive query support is optional.
  4547.  
  4548. RA              Recursion Available - this be is set or cleared in a
  4549.                 response, and denotes whether recursive query support is
  4550.                 available in the name server.
  4551.  
  4552. Z               Reserved for future use.  Must be zero in all queries
  4553.                 and responses.
  4554.  
  4555. RCODE           Response code - this 4 bit field is set as part of
  4556.                 responses.  The values have the following
  4557.                 interpretation:
  4558.  
  4559.                 0               No error condition
  4560.  
  4561.                 1               Format error - The name server was
  4562.                                 unable to interpret the query.
  4563.  
  4564.                 2               Server failure - The name server was
  4565.                                 unable to process this query due to a
  4566.                                 problem with the name server.
  4567.  
  4568.                 3               Name Error - Meaningful only for
  4569.                                 responses from an authoritative name
  4570.                                 server, this code signifies that the
  4571.                                 domain name referenced in the query does
  4572.                                 not exist.
  4573.  
  4574.                 4               Not Implemented - The name server does
  4575.                                 not support the requested kind of query.
  4576.  
  4577.                 5               Refused - The name server refuses to
  4578.                                 perform the specified operation for
  4579.                                 policy reasons.  For example, a name
  4580.                                 server may not wish to provide the
  4581.                                 information to the particular requester,
  4582.                                 or a name server may not wish to perform
  4583.                                 a particular operation (e.g., zone
  4584.  
  4585.  
  4586.  
  4587. Mockapetris                                                    [Page 27]
  4588.  
  4589. RFC 1035        Domain Implementation and Specification    November 1987
  4590.  
  4591.  
  4592.                                 transfer) for particular data.
  4593.  
  4594.                 6-15            Reserved for future use.
  4595.  
  4596. QDCOUNT         an unsigned 16 bit integer specifying the number of
  4597.                 entries in the question section.
  4598.  
  4599. ANCOUNT         an unsigned 16 bit integer specifying the number of
  4600.                 resource records in the answer section.
  4601.  
  4602. NSCOUNT         an unsigned 16 bit integer specifying the number of name
  4603.                 server resource records in the authority records
  4604.                 section.
  4605.  
  4606. ARCOUNT         an unsigned 16 bit integer specifying the number of
  4607.                 resource records in the additional records section.
  4608.  
  4609. 4.1.2. Question section format
  4610.  
  4611. The question section is used to carry the "question" in most queries,
  4612. i.e., the parameters that define what is being asked.  The section
  4613. contains QDCOUNT (usually 1) entries, each of the following format:
  4614.  
  4615.                                     1  1  1  1  1  1
  4616.       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  4617.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4618.     |                                               |
  4619.     /                     QNAME                     /
  4620.     /                                               /
  4621.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4622.     |                     QTYPE                     |
  4623.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4624.     |                     QCLASS                    |
  4625.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4626.  
  4627. where:
  4628.  
  4629. QNAME           a domain name represented as a sequence of labels, where
  4630.                 each label consists of a length octet followed by that
  4631.                 number of octets.  The domain name terminates with the
  4632.                 zero length octet for the null label of the root.  Note
  4633.                 that this field may be an odd number of octets; no
  4634.                 padding is used.
  4635.  
  4636. QTYPE           a two octet code which specifies the type of the query.
  4637.                 The values for this field include all codes valid for a
  4638.                 TYPE field, together with some more general codes which
  4639.                 can match more than one type of RR.
  4640.  
  4641.  
  4642.  
  4643. Mockapetris                                                    [Page 28]
  4644.  
  4645. RFC 1035        Domain Implementation and Specification    November 1987
  4646.  
  4647.  
  4648. QCLASS          a two octet code that specifies the class of the query.
  4649.                 For example, the QCLASS field is IN for the Internet.
  4650.  
  4651. 4.1.3. Resource record format
  4652.  
  4653. The answer, authority, and additional sections all share the same
  4654. format: a variable number of resource records, where the number of
  4655. records is specified in the corresponding count field in the header.
  4656. Each resource record has the following format:
  4657.                                     1  1  1  1  1  1
  4658.       0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
  4659.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4660.     |                                               |
  4661.     /                                               /
  4662.     /                      NAME                     /
  4663.     |                                               |
  4664.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4665.     |                      TYPE                     |
  4666.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4667.     |                     CLASS                     |
  4668.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4669.     |                      TTL                      |
  4670.     |                                               |
  4671.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4672.     |                   RDLENGTH                    |
  4673.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
  4674.     /                     RDATA                     /
  4675.     /                                               /
  4676.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4677.  
  4678. where:
  4679.  
  4680. NAME            a domain name to which this resource record pertains.
  4681.  
  4682. TYPE            two octets containing one of the RR type codes.  This
  4683.                 field specifies the meaning of the data in the RDATA
  4684.                 field.
  4685.  
  4686. CLASS           two octets which specify the class of the data in the
  4687.                 RDATA field.
  4688.  
  4689. TTL             a 32 bit unsigned integer that specifies the time
  4690.                 interval (in seconds) that the resource record may be
  4691.                 cached before it should be discarded.  Zero values are
  4692.                 interpreted to mean that the RR can only be used for the
  4693.                 transaction in progress, and should not be cached.
  4694.  
  4695.  
  4696.  
  4697.  
  4698.  
  4699. Mockapetris                                                    [Page 29]
  4700.  
  4701. RFC 1035        Domain Implementation and Specification    November 1987
  4702.  
  4703.  
  4704. RDLENGTH        an unsigned 16 bit integer that specifies the length in
  4705.                 octets of the RDATA field.
  4706.  
  4707. RDATA           a variable length string of octets that describes the
  4708.                 resource.  The format of this information varies
  4709.                 according to the TYPE and CLASS of the resource record.
  4710.                 For example, the if the TYPE is A and the CLASS is IN,
  4711.                 the RDATA field is a 4 octet ARPA Internet address.
  4712.  
  4713. 4.1.4. Message compression
  4714.  
  4715. In order to reduce the size of messages, the domain system utilizes a
  4716. compression scheme which eliminates the repetition of domain names in a
  4717. message.  In this scheme, an entire domain name or a list of labels at
  4718. the end of a domain name is replaced with a pointer to a prior occurance
  4719. of the same name.
  4720.  
  4721. The pointer takes the form of a two octet sequence:
  4722.  
  4723.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4724.     | 1  1|                OFFSET                   |
  4725.     +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4726.  
  4727. The first two bits are ones.  This allows a pointer to be distinguished
  4728. from a label, since the label must begin with two zero bits because
  4729. labels are restricted to 63 octets or less.  (The 10 and 01 combinations
  4730. are reserved for future use.)  The OFFSET field specifies an offset from
  4731. the start of the message (i.e., the first octet of the ID field in the
  4732. domain header).  A zero offset specifies the first byte of the ID field,
  4733. etc.
  4734.  
  4735. The compression scheme allows a domain name in a message to be
  4736. represented as either:
  4737.  
  4738.    - a sequence of labels ending in a zero octet
  4739.  
  4740.    - a pointer
  4741.  
  4742.    - a sequence of labels ending with a pointer
  4743.  
  4744. Pointers can only be used for occurances of a domain name where the
  4745. format is not class specific.  If this were not the case, a name server
  4746. or resolver would be required to know the format of all RRs it handled.
  4747. As yet, there are no such cases, but they may occur in future RDATA
  4748. formats.
  4749.  
  4750. If a domain name is contained in a part of the message subject to a
  4751. length field (such as the RDATA section of an RR), and compression is
  4752.  
  4753.  
  4754.  
  4755. Mockapetris                                                    [Page 30]
  4756.  
  4757. RFC 1035        Domain Implementation and Specification    November 1987
  4758.  
  4759.  
  4760. used, the length of the compressed name is used in the length
  4761. calculation, rather than the length of the expanded name.
  4762.  
  4763. Programs are free to avoid using pointers in messages they generate,
  4764. although this will reduce datagram capacity, and may cause truncation.
  4765. However all programs are required to understand arriving messages that
  4766. contain pointers.
  4767.  
  4768. For example, a datagram might need to use the domain names F.ISI.ARPA,
  4769. FOO.F.ISI.ARPA, ARPA, and the root.  Ignoring the other fields of the
  4770. message, these domain names might be represented as:
  4771.  
  4772.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4773.     20 |           1           |           F           |
  4774.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4775.     22 |           3           |           I           |
  4776.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4777.     24 |           S           |           I           |
  4778.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4779.     26 |           4           |           A           |
  4780.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4781.     28 |           R           |           P           |
  4782.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4783.     30 |           A           |           0           |
  4784.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4785.  
  4786.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4787.     40 |           3           |           F           |
  4788.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4789.     42 |           O           |           O           |
  4790.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4791.     44 | 1  1|                20                       |
  4792.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4793.  
  4794.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4795.     64 | 1  1|                26                       |
  4796.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4797.  
  4798.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4799.     92 |           0           |                       |
  4800.        +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
  4801.  
  4802. The domain name for F.ISI.ARPA is shown at offset 20.  The domain name
  4803. FOO.F.ISI.ARPA is shown at offset 40; this definition uses a pointer to
  4804. concatenate a label for FOO to the previously defined F.ISI.ARPA.  The
  4805. domain name ARPA is defined at offset 64 using a pointer to the ARPA
  4806. component of the name F.ISI.ARPA at 20; note that this pointer relies on
  4807. ARPA being the last label in the string at 20.  The root domain name is
  4808.  
  4809.  
  4810.  
  4811. Mockapetris                                                    [Page 31]
  4812.  
  4813. RFC 1035        Domain Implementation and Specification    November 1987
  4814.  
  4815.  
  4816. defined by a single octet of zeros at 92; the root domain name has no
  4817. labels.
  4818.  
  4819. 4.2. Transport
  4820.  
  4821. The DNS assumes that messages will be transmitted as datagrams or in a
  4822. byte stream carried by a virtual circuit.  While virtual circuits can be
  4823. used for any DNS activity, datagrams are preferred for queries due to
  4824. their lower overhead and better performance.  Zone refresh activities
  4825. must use virtual circuits because of the need for reliable transfer.
  4826.  
  4827. The Internet supports name server access using TCP [RFC-793] on server
  4828. port 53 (decimal) as well as datagram access using UDP [RFC-768] on UDP
  4829. port 53 (decimal).
  4830.  
  4831. 4.2.1. UDP usage
  4832.  
  4833. Messages sent using UDP user server port 53 (decimal).
  4834.  
  4835. Messages carried by UDP are restricted to 512 bytes (not counting the IP
  4836. or UDP headers).  Longer messages are truncated and the TC bit is set in
  4837. the header.
  4838.  
  4839. UDP is not acceptable for zone transfers, but is the recommended method
  4840. for standard queries in the Internet.  Queries sent using UDP may be
  4841. lost, and hence a retransmission strategy is required.  Queries or their
  4842. responses may be reordered by the network, or by processing in name
  4843. servers, so resolvers should not depend on them being returned in order.
  4844.  
  4845. The optimal UDP retransmission policy will vary with performance of the
  4846. Internet and the needs of the client, but the following are recommended:
  4847.  
  4848.    - The client should try other servers and server addresses
  4849.      before repeating a query to a specific address of a server.
  4850.  
  4851.    - The retransmission interval should be based on prior
  4852.      statistics if possible.  Too aggressive retransmission can
  4853.      easily slow responses for the community at large.  Depending
  4854.      on how well connected the client is to its expected servers,
  4855.      the minimum retransmission interval should be 2-5 seconds.
  4856.  
  4857. More suggestions on server selection and retransmission policy can be
  4858. found in the resolver section of this memo.
  4859.  
  4860. 4.2.2. TCP usage
  4861.  
  4862. Messages sent over TCP connections use server port 53 (decimal).  The
  4863. message is prefixed with a two byte length field which gives the message
  4864.  
  4865.  
  4866.  
  4867. Mockapetris                                                    [Page 32]
  4868.  
  4869. RFC 1035        Domain Implementation and Specification    November 1987
  4870.  
  4871.  
  4872. length, excluding the two byte length field.  This length field allows
  4873. the low-level processing to assemble a complete message before beginning
  4874. to parse it.
  4875.  
  4876. Several connection management policies are recommended:
  4877.  
  4878.    - The server should not block other activities waiting for TCP
  4879.      data.
  4880.  
  4881.    - The server should support multiple connections.
  4882.  
  4883.    - The server should assume that the client will initiate
  4884.      connection closing, and should delay closing its end of the
  4885.      connection until all outstanding client requests have been
  4886.      satisfied.
  4887.  
  4888.    - If the server needs to close a dormant connection to reclaim
  4889.      resources, it should wait until the connection has been idle
  4890.      for a period on the order of two minutes.  In particular, the
  4891.      server should allow the SOA and AXFR request sequence (which
  4892.      begins a refresh operation) to be made on a single connection.
  4893.      Since the server would be unable to answer queries anyway, a
  4894.      unilateral close or reset may be used instead of a graceful
  4895.      close.
  4896.  
  4897. 5. MASTER FILES
  4898.  
  4899. Master files are text files that contain RRs in text form.  Since the
  4900. contents of a zone can be expressed in the form of a list of RRs a
  4901. master file is most often used to define a zone, though it can be used
  4902. to list a cache's contents.  Hence, this section first discusses the
  4903. format of RRs in a master file, and then the special considerations when
  4904. a master file is used to create a zone in some name server.
  4905.  
  4906. 5.1. Format
  4907.  
  4908. The format of these files is a sequence of entries.  Entries are
  4909. predominantly line-oriented, though parentheses can be used to continue
  4910. a list of items across a line boundary, and text literals can contain
  4911. CRLF within the text.  Any combination of tabs and spaces act as a
  4912. delimiter between the separate items that make up an entry.  The end of
  4913. any line in the master file can end with a comment.  The comment starts
  4914. with a ";" (semicolon).
  4915.  
  4916. The following entries are defined:
  4917.  
  4918.     <blank>[<comment>]
  4919.  
  4920.  
  4921.  
  4922.  
  4923. Mockapetris                                                    [Page 33]
  4924.  
  4925. RFC 1035        Domain Implementation and Specification    November 1987
  4926.  
  4927.  
  4928.     $ORIGIN <domain-name> [<comment>]
  4929.  
  4930.     $INCLUDE <file-name> [<domain-name>] [<comment>]
  4931.  
  4932.     <domain-name><rr> [<comment>]
  4933.  
  4934.     <blank><rr> [<comment>]
  4935.  
  4936. Blank lines, with or without comments, are allowed anywhere in the file.
  4937.  
  4938. Two control entries are defined: $ORIGIN and $INCLUDE.  $ORIGIN is
  4939. followed by a domain name, and resets the current origin for relative
  4940. domain names to the stated name.  $INCLUDE inserts the named file into
  4941. the current file, and may optionally specify a domain name that sets the
  4942. relative domain name origin for the included file.  $INCLUDE may also
  4943. have a comment.  Note that a $INCLUDE entry never changes the relative
  4944. origin of the parent file, regardless of changes to the relative origin
  4945. made within the included file.
  4946.  
  4947. The last two forms represent RRs.  If an entry for an RR begins with a
  4948. blank, then the RR is assumed to be owned by the last stated owner.  If
  4949. an RR entry begins with a <domain-name>, then the owner name is reset.
  4950.  
  4951. <rr> contents take one of the following forms:
  4952.  
  4953.     [<TTL>] [<class>] <type> <RDATA>
  4954.  
  4955.     [<class>] [<TTL>] <type> <RDATA>
  4956.  
  4957. The RR begins with optional TTL and class fields, followed by a type and
  4958. RDATA field appropriate to the type and class.  Class and type use the
  4959. standard mnemonics, TTL is a decimal integer.  Omitted class and TTL
  4960. values are default to the last explicitly stated values.  Since type and
  4961. class mnemonics are disjoint, the parse is unique.  (Note that this
  4962. order is different from the order used in examples and the order used in
  4963. the actual RRs; the given order allows easier parsing and defaulting.)
  4964.  
  4965. <domain-name>s make up a large share of the data in the master file.
  4966. The labels in the domain name are expressed as character strings and
  4967. separated by dots.  Quoting conventions allow arbitrary characters to be
  4968. stored in domain names.  Domain names that end in a dot are called
  4969. absolute, and are taken as complete.  Domain names which do not end in a
  4970. dot are called relative; the actual domain name is the concatenation of
  4971. the relative part with an origin specified in a $ORIGIN, $INCLUDE, or as
  4972. an argument to the master file loading routine.  A relative name is an
  4973. error when no origin is available.
  4974.  
  4975.  
  4976.  
  4977.  
  4978.  
  4979. Mockapetris                                                    [Page 34]
  4980.  
  4981. RFC 1035        Domain Implementation and Specification    November 1987
  4982.  
  4983.  
  4984. <character-string> is expressed in one or two ways: as a contiguous set
  4985. of characters without interior spaces, or as a string beginning with a "
  4986. and ending with a ".  Inside a " delimited string any character can
  4987. occur, except for a " itself, which must be quoted using \ (back slash).
  4988.  
  4989. Because these files are text files several special encodings are
  4990. necessary to allow arbitrary data to be loaded.  In particular:
  4991.  
  4992.                 of the root.
  4993.  
  4994. @               A free standing @ is used to denote the current origin.
  4995.  
  4996. \X              where X is any character other than a digit (0-9), is
  4997.                 used to quote that character so that its special meaning
  4998.                 does not apply.  For example, "\." can be used to place
  4999.                 a dot character in a label.
  5000.  
  5001. \DDD            where each D is a digit is the octet corresponding to
  5002.                 the decimal number described by DDD.  The resulting
  5003.                 octet is assumed to be text and is not checked for
  5004.                 special meaning.
  5005.  
  5006. ( )             Parentheses are used to group data that crosses a line
  5007.                 boundary.  In effect, line terminations are not
  5008.                 recognized within parentheses.
  5009.  
  5010. ;               Semicolon is used to start a comment; the remainder of
  5011.                 the line is ignored.
  5012.  
  5013. 5.2. Use of master files to define zones
  5014.  
  5015. When a master file is used to load a zone, the operation should be
  5016. suppressed if any errors are encountered in the master file.  The
  5017. rationale for this is that a single error can have widespread
  5018. consequences.  For example, suppose that the RRs defining a delegation
  5019. have syntax errors; then the server will return authoritative name
  5020. errors for all names in the subzone (except in the case where the
  5021. subzone is also present on the server).
  5022.  
  5023. Several other validity checks that should be performed in addition to
  5024. insuring that the file is syntactically correct:
  5025.  
  5026.    1. All RRs in the file should have the same class.
  5027.  
  5028.    2. Exactly one SOA RR should be present at the top of the zone.
  5029.  
  5030.    3. If delegations are present and glue information is required,
  5031.       it should be present.
  5032.  
  5033.  
  5034.  
  5035. Mockapetris                                                    [Page 35]
  5036.  
  5037. RFC 1035        Domain Implementation and Specification    November 1987
  5038.  
  5039.  
  5040.    4. Information present outside of the authoritative nodes in the
  5041.       zone should be glue information, rather than the result of an
  5042.       origin or similar error.
  5043.  
  5044. 5.3. Master file example
  5045.  
  5046. The following is an example file which might be used to define the
  5047. ISI.EDU zone.and is loaded with an origin of ISI.EDU:
  5048.  
  5049. @   IN  SOA     VENERA      Action\.domains (
  5050.                                  20     ; SERIAL
  5051.                                  7200   ; REFRESH
  5052.                                  600    ; RETRY
  5053.                                  3600000; EXPIRE
  5054.                                  60)    ; MINIMUM
  5055.  
  5056.         NS      A.ISI.EDU.
  5057.         NS      VENERA
  5058.         NS      VAXA
  5059.         MX      10      VENERA
  5060.         MX      20      VAXA
  5061.  
  5062. A       A       26.3.0.103
  5063.  
  5064. VENERA  A       10.1.0.52
  5065.         A       128.9.0.32
  5066.  
  5067. VAXA    A       10.2.0.27
  5068.         A       128.9.0.33
  5069.  
  5070.  
  5071. $INCLUDE <SUBSYS>ISI-MAILBOXES.TXT
  5072.  
  5073. Where the file <SUBSYS>ISI-MAILBOXES.TXT is:
  5074.  
  5075.     MOE     MB      A.ISI.EDU.
  5076.     LARRY   MB      A.ISI.EDU.
  5077.     CURLEY  MB      A.ISI.EDU.
  5078.     STOOGES MG      MOE
  5079.             MG      LARRY
  5080.             MG      CURLEY
  5081.  
  5082. Note the use of the \ character in the SOA RR to specify the responsible
  5083. person mailbox "Action.domains@E.ISI.EDU".
  5084.  
  5085.  
  5086.  
  5087.  
  5088.  
  5089.  
  5090.  
  5091. Mockapetris                                                    [Page 36]
  5092.  
  5093. RFC 1035        Domain Implementation and Specification    November 1987
  5094.  
  5095.  
  5096. 6. NAME SERVER IMPLEMENTATION
  5097.  
  5098. 6.1. Architecture
  5099.  
  5100. The optimal structure for the name server will depend on the host
  5101. operating system and whether the name server is integrated with resolver
  5102. operations, either by supporting recursive service, or by sharing its
  5103. database with a resolver.  This section discusses implementation
  5104. considerations for a name server which shares a database with a
  5105. resolver, but most of these concerns are present in any name server.
  5106.  
  5107. 6.1.1. Control
  5108.  
  5109. A name server must employ multiple concurrent activities, whether they
  5110. are implemented as separate tasks in the host's OS or multiplexing
  5111. inside a single name server program.  It is simply not acceptable for a
  5112. name server to block the service of UDP requests while it waits for TCP
  5113. data for refreshing or query activities.  Similarly, a name server
  5114. should not attempt to provide recursive service without processing such
  5115. requests in parallel, though it may choose to serialize requests from a
  5116. single client, or to regard identical requests from the same client as
  5117. duplicates.  A name server should not substantially delay requests while
  5118. it reloads a zone from master files or while it incorporates a newly
  5119. refreshed zone into its database.
  5120.  
  5121. 6.1.2. Database
  5122.  
  5123. While name server implementations are free to use any internal data
  5124. structures they choose, the suggested structure consists of three major
  5125. parts:
  5126.  
  5127.    - A "catalog" data structure which lists the zones available to
  5128.      this server, and a "pointer" to the zone data structure.  The
  5129.      main purpose of this structure is to find the nearest ancestor
  5130.      zone, if any, for arriving standard queries.
  5131.  
  5132.    - Separate data structures for each of the zones held by the
  5133.      name server.
  5134.  
  5135.    - A data structure for cached data. (or perhaps separate caches
  5136.      for different classes)
  5137.  
  5138. All of these data structures can be implemented an identical tree
  5139. structure format, with different data chained off the nodes in different
  5140. parts: in the catalog the data is pointers to zones, while in the zone
  5141. and cache data structures, the data will be RRs.  In designing the tree
  5142. framework the designer should recognize that query processing will need
  5143. to traverse the tree using case-insensitive label comparisons; and that
  5144.  
  5145.  
  5146.  
  5147. Mockapetris                                                    [Page 37]
  5148.  
  5149. RFC 1035        Domain Implementation and Specification    November 1987
  5150.  
  5151.  
  5152. in real data, a few nodes have a very high branching factor (100-1000 or
  5153. more), but the vast majority have a very low branching factor (0-1).
  5154.  
  5155. One way to solve the case problem is to store the labels for each node
  5156. in two pieces: a standardized-case representation of the label where all
  5157. ASCII characters are in a single case, together with a bit mask that
  5158. denotes which characters are actually of a different case.  The
  5159. branching factor diversity can be handled using a simple linked list for
  5160. a node until the branching factor exceeds some threshold, and
  5161. transitioning to a hash structure after the threshold is exceeded.  In
  5162. any case, hash structures used to store tree sections must insure that
  5163. hash functions and procedures preserve the casing conventions of the
  5164. DNS.
  5165.  
  5166. The use of separate structures for the different parts of the database
  5167. is motivated by several factors:
  5168.  
  5169.    - The catalog structure can be an almost static structure that
  5170.      need change only when the system administrator changes the
  5171.      zones supported by the server.  This structure can also be
  5172.      used to store parameters used to control refreshing
  5173.      activities.
  5174.  
  5175.    - The individual data structures for zones allow a zone to be
  5176.      replaced simply by changing a pointer in the catalog.  Zone
  5177.      refresh operations can build a new structure and, when
  5178.      complete, splice it into the database via a simple pointer
  5179.      replacement.  It is very important that when a zone is
  5180.      refreshed, queries should not use old and new data
  5181.      simultaneously.
  5182.  
  5183.    - With the proper search procedures, authoritative data in zones
  5184.      will always "hide", and hence take precedence over, cached
  5185.      data.
  5186.  
  5187.    - Errors in zone definitions that cause overlapping zones, etc.,
  5188.      may cause erroneous responses to queries, but problem
  5189.      determination is simplified, and the contents of one "bad"
  5190.      zone can't corrupt another.
  5191.  
  5192.    - Since the cache is most frequently updated, it is most
  5193.      vulnerable to corruption during system restarts.  It can also
  5194.      become full of expired RR data.  In either case, it can easily
  5195.      be discarded without disturbing zone data.
  5196.  
  5197. A major aspect of database design is selecting a structure which allows
  5198. the name server to deal with crashes of the name server's host.  State
  5199. information which a name server should save across system crashes
  5200.  
  5201.  
  5202.  
  5203. Mockapetris                                                    [Page 38]
  5204.  
  5205. RFC 1035        Domain Implementation and Specification    November 1987
  5206.  
  5207.  
  5208. includes the catalog structure (including the state of refreshing for
  5209. each zone) and the zone data itself.
  5210.  
  5211. 6.1.3. Time
  5212.  
  5213. Both the TTL data for RRs and the timing data for refreshing activities
  5214. depends on 32 bit timers in units of seconds.  Inside the database,
  5215. refresh timers and TTLs for cached data conceptually "count down", while
  5216. data in the zone stays with constant TTLs.
  5217.  
  5218. A recommended implementation strategy is to store time in two ways:  as
  5219. a relative increment and as an absolute time.  One way to do this is to
  5220. use positive 32 bit numbers for one type and negative numbers for the
  5221. other.  The RRs in zones use relative times; the refresh timers and
  5222. cache data use absolute times.  Absolute numbers are taken with respect
  5223. to some known origin and converted to relative values when placed in the
  5224. response to a query.  When an absolute TTL is negative after conversion
  5225. to relative, then the data is expired and should be ignored.
  5226.  
  5227. 6.2. Standard query processing
  5228.  
  5229. The major algorithm for standard query processing is presented in
  5230. [RFC-1034].
  5231.  
  5232. When processing queries with QCLASS=*, or some other QCLASS which
  5233. matches multiple classes, the response should never be authoritative
  5234. unless the server can guarantee that the response covers all classes.
  5235.  
  5236. When composing a response, RRs which are to be inserted in the
  5237. additional section, but duplicate RRs in the answer or authority
  5238. sections, may be omitted from the additional section.
  5239.  
  5240. When a response is so long that truncation is required, the truncation
  5241. should start at the end of the response and work forward in the
  5242. datagram.  Thus if there is any data for the authority section, the
  5243. answer section is guaranteed to be unique.
  5244.  
  5245. The MINIMUM value in the SOA should be used to set a floor on the TTL of
  5246. data distributed from a zone.  This floor function should be done when
  5247. the data is copied into a response.  This will allow future dynamic
  5248. update protocols to change the SOA MINIMUM field without ambiguous
  5249. semantics.
  5250.  
  5251. 6.3. Zone refresh and reload processing
  5252.  
  5253. In spite of a server's best efforts, it may be unable to load zone data
  5254. from a master file due to syntax errors, etc., or be unable to refresh a
  5255. zone within the its expiration parameter.  In this case, the name server
  5256.  
  5257.  
  5258.  
  5259. Mockapetris                                                    [Page 39]
  5260.  
  5261. RFC 1035        Domain Implementation and Specification    November 1987
  5262.  
  5263.  
  5264. should answer queries as if it were not supposed to possess the zone.
  5265.  
  5266. If a master is sending a zone out via AXFR, and a new version is created
  5267. during the transfer, the master should continue to send the old version
  5268. if possible.  In any case, it should never send part of one version and
  5269. part of another.  If completion is not possible, the master should reset
  5270. the connection on which the zone transfer is taking place.
  5271.  
  5272. 6.4. Inverse queries (Optional)
  5273.  
  5274. Inverse queries are an optional part of the DNS.  Name servers are not
  5275. required to support any form of inverse queries.  If a name server
  5276. receives an inverse query that it does not support, it returns an error
  5277. response with the "Not Implemented" error set in the header.  While
  5278. inverse query support is optional, all name servers must be at least
  5279. able to return the error response.
  5280.  
  5281. 6.4.1. The contents of inverse queries and responses          Inverse
  5282. queries reverse the mappings performed by standard query operations;
  5283. while a standard query maps a domain name to a resource, an inverse
  5284. query maps a resource to a domain name.  For example, a standard query
  5285. might bind a domain name to a host address; the corresponding inverse
  5286. query binds the host address to a domain name.
  5287.  
  5288. Inverse queries take the form of a single RR in the answer section of
  5289. the message, with an empty question section.  The owner name of the
  5290. query RR and its TTL are not significant.  The response carries
  5291. questions in the question section which identify all names possessing
  5292. the query RR WHICH THE NAME SERVER KNOWS.  Since no name server knows
  5293. about all of the domain name space, the response can never be assumed to
  5294. be complete.  Thus inverse queries are primarily useful for database
  5295. management and debugging activities.  Inverse queries are NOT an
  5296. acceptable method of mapping host addresses to host names; use the IN-
  5297. ADDR.ARPA domain instead.
  5298.  
  5299. Where possible, name servers should provide case-insensitive comparisons
  5300. for inverse queries.  Thus an inverse query asking for an MX RR of
  5301. "Venera.isi.edu" should get the same response as a query for
  5302. "VENERA.ISI.EDU"; an inverse query for HINFO RR "IBM-PC UNIX" should
  5303. produce the same result as an inverse query for "IBM-pc unix".  However,
  5304. this cannot be guaranteed because name servers may possess RRs that
  5305. contain character strings but the name server does not know that the
  5306. data is character.
  5307.  
  5308. When a name server processes an inverse query, it either returns:
  5309.  
  5310.    1. zero, one, or multiple domain names for the specified
  5311.       resource as QNAMEs in the question section
  5312.  
  5313.  
  5314.  
  5315. Mockapetris                                                    [Page 40]
  5316.  
  5317. RFC 1035        Domain Implementation and Specification    November 1987
  5318.  
  5319.  
  5320.    2. an error code indicating that the name server doesn't support
  5321.       inverse mapping of the specified resource type.
  5322.  
  5323. When the response to an inverse query contains one or more QNAMEs, the
  5324. owner name and TTL of the RR in the answer section which defines the
  5325. inverse query is modified to exactly match an RR found at the first
  5326. QNAME.
  5327.  
  5328. RRs returned in the inverse queries cannot be cached using the same
  5329. mechanism as is used for the replies to standard queries.  One reason
  5330. for this is that a name might have multiple RRs of the same type, and
  5331. only one would appear.  For example, an inverse query for a single
  5332. address of a multiply homed host might create the impression that only
  5333. one address existed.
  5334.  
  5335. 6.4.2. Inverse query and response example          The overall structure
  5336. of an inverse query for retrieving the domain name that corresponds to
  5337. Internet address 10.1.0.52 is shown below:
  5338.  
  5339.                          +-----------------------------------------+
  5340.            Header        |          OPCODE=IQUERY, ID=997          |
  5341.                          +-----------------------------------------+
  5342.           Question       |                 <empty>                 |
  5343.                          +-----------------------------------------+
  5344.            Answer        |        <anyname> A IN 10.1.0.52         |
  5345.                          +-----------------------------------------+
  5346.           Authority      |                 <empty>                 |
  5347.                          +-----------------------------------------+
  5348.          Additional      |                 <empty>                 |
  5349.                          +-----------------------------------------+
  5350.  
  5351. This query asks for a question whose answer is the Internet style
  5352. address 10.1.0.52.  Since the owner name is not known, any domain name
  5353. can be used as a placeholder (and is ignored).  A single octet of zero,
  5354. signifying the root, is usually used because it minimizes the length of
  5355. the message.  The TTL of the RR is not significant.  The response to
  5356. this query might be:
  5357.  
  5358.  
  5359.  
  5360.  
  5361.  
  5362.  
  5363.  
  5364.  
  5365.  
  5366.  
  5367.  
  5368.  
  5369.  
  5370.  
  5371. Mockapetris                                                    [Page 41]
  5372.  
  5373. RFC 1035        Domain Implementation and Specification    November 1987
  5374.  
  5375.  
  5376.                          +-----------------------------------------+
  5377.            Header        |         OPCODE=RESPONSE, ID=997         |
  5378.                          +-----------------------------------------+
  5379.           Question       |QTYPE=A, QCLASS=IN, QNAME=VENERA.ISI.EDU |
  5380.                          +-----------------------------------------+
  5381.            Answer        |  VENERA.ISI.EDU  A IN 10.1.0.52         |
  5382.                          +-----------------------------------------+
  5383.           Authority      |                 <empty>                 |
  5384.                          +-----------------------------------------+
  5385.          Additional      |                 <empty>                 |
  5386.                          +-----------------------------------------+
  5387.  
  5388. Note that the QTYPE in a response to an inverse query is the same as the
  5389. TYPE field in the answer section of the inverse query.  Responses to
  5390. inverse queries may contain multiple questions when the inverse is not
  5391. unique.  If the question section in the response is not empty, then the
  5392. RR in the answer section is modified to correspond to be an exact copy
  5393. of an RR at the first QNAME.
  5394.  
  5395. 6.4.3. Inverse query processing
  5396.  
  5397. Name servers that support inverse queries can support these operations
  5398. through exhaustive searches of their databases, but this becomes
  5399. impractical as the size of the database increases.  An alternative
  5400. approach is to invert the database according to the search key.
  5401.  
  5402. For name servers that support multiple zones and a large amount of data,
  5403. the recommended approach is separate inversions for each zone.  When a
  5404. particular zone is changed during a refresh, only its inversions need to
  5405. be redone.
  5406.  
  5407. Support for transfer of this type of inversion may be included in future
  5408. versions of the domain system, but is not supported in this version.
  5409.  
  5410. 6.5. Completion queries and responses
  5411.  
  5412. The optional completion services described in RFC-882 and RFC-883 have
  5413. been deleted.  Redesigned services may become available in the future.
  5414.  
  5415.  
  5416.  
  5417.  
  5418.  
  5419.  
  5420.  
  5421.  
  5422.  
  5423.  
  5424.  
  5425.  
  5426.  
  5427. Mockapetris                                                    [Page 42]
  5428.  
  5429. RFC 1035        Domain Implementation and Specification    November 1987
  5430.  
  5431.  
  5432. 7. RESOLVER IMPLEMENTATION
  5433.  
  5434. The top levels of the recommended resolver algorithm are discussed in
  5435. [RFC-1034].  This section discusses implementation details assuming the
  5436. database structure suggested in the name server implementation section
  5437. of this memo.
  5438.  
  5439. 7.1. Transforming a user request into a query
  5440.  
  5441. The first step a resolver takes is to transform the client's request,
  5442. stated in a format suitable to the local OS, into a search specification
  5443. for RRs at a specific name which match a specific QTYPE and QCLASS.
  5444. Where possible, the QTYPE and QCLASS should correspond to a single type
  5445. and a single class, because this makes the use of cached data much
  5446. simpler.  The reason for this is that the presence of data of one type
  5447. in a cache doesn't confirm the existence or non-existence of data of
  5448. other types, hence the only way to be sure is to consult an
  5449. authoritative source.  If QCLASS=* is used, then authoritative answers
  5450. won't be available.
  5451.  
  5452. Since a resolver must be able to multiplex multiple requests if it is to
  5453. perform its function efficiently, each pending request is usually
  5454. represented in some block of state information.  This state block will
  5455. typically contain:
  5456.  
  5457.    - A timestamp indicating the time the request began.
  5458.      The timestamp is used to decide whether RRs in the database
  5459.      can be used or are out of date.  This timestamp uses the
  5460.      absolute time format previously discussed for RR storage in
  5461.      zones and caches.  Note that when an RRs TTL indicates a
  5462.      relative time, the RR must be timely, since it is part of a
  5463.      zone.  When the RR has an absolute time, it is part of a
  5464.      cache, and the TTL of the RR is compared against the timestamp
  5465.      for the start of the request.
  5466.  
  5467.      Note that using the timestamp is superior to using a current
  5468.      time, since it allows RRs with TTLs of zero to be entered in
  5469.      the cache in the usual manner, but still used by the current
  5470.      request, even after intervals of many seconds due to system
  5471.      load, query retransmission timeouts, etc.
  5472.  
  5473.    - Some sort of parameters to limit the amount of work which will
  5474.      be performed for this request.
  5475.  
  5476.      The amount of work which a resolver will do in response to a
  5477.      client request must be limited to guard against errors in the
  5478.      database, such as circular CNAME references, and operational
  5479.      problems, such as network partition which prevents the
  5480.  
  5481.  
  5482.  
  5483. Mockapetris                                                    [Page 43]
  5484.  
  5485. RFC 1035        Domain Implementation and Specification    November 1987
  5486.  
  5487.  
  5488.      resolver from accessing the name servers it needs.  While
  5489.      local limits on the number of times a resolver will retransmit
  5490.      a particular query to a particular name server address are
  5491.      essential, the resolver should have a global per-request
  5492.      counter to limit work on a single request.  The counter should
  5493.      be set to some initial value and decremented whenever the
  5494.      resolver performs any action (retransmission timeout,
  5495.      retransmission, etc.)  If the counter passes zero, the request
  5496.      is terminated with a temporary error.
  5497.  
  5498.      Note that if the resolver structure allows one request to
  5499.      start others in parallel, such as when the need to access a
  5500.      name server for one request causes a parallel resolve for the
  5501.      name server's addresses, the spawned request should be started
  5502.      with a lower counter.  This prevents circular references in
  5503.      the database from starting a chain reaction of resolver
  5504.      activity.
  5505.  
  5506.    - The SLIST data structure discussed in [RFC-1034].
  5507.  
  5508.      This structure keeps track of the state of a request if it
  5509.      must wait for answers from foreign name servers.
  5510.  
  5511. 7.2. Sending the queries
  5512.  
  5513. As described in [RFC-1034], the basic task of the resolver is to
  5514. formulate a query which will answer the client's request and direct that
  5515. query to name servers which can provide the information.  The resolver
  5516. will usually only have very strong hints about which servers to ask, in
  5517. the form of NS RRs, and may have to revise the query, in response to
  5518. CNAMEs, or revise the set of name servers the resolver is asking, in
  5519. response to delegation responses which point the resolver to name
  5520. servers closer to the desired information.  In addition to the
  5521. information requested by the client, the resolver may have to call upon
  5522. its own services to determine the address of name servers it wishes to
  5523. contact.
  5524.  
  5525. In any case, the model used in this memo assumes that the resolver is
  5526. multiplexing attention between multiple requests, some from the client,
  5527. and some internally generated.  Each request is represented by some
  5528. state information, and the desired behavior is that the resolver
  5529. transmit queries to name servers in a way that maximizes the probability
  5530. that the request is answered, minimizes the time that the request takes,
  5531. and avoids excessive transmissions.  The key algorithm uses the state
  5532. information of the request to select the next name server address to
  5533. query, and also computes a timeout which will cause the next action
  5534. should a response not arrive.  The next action will usually be a
  5535. transmission to some other server, but may be a temporary error to the
  5536.  
  5537.  
  5538.  
  5539. Mockapetris                                                    [Page 44]
  5540.  
  5541. RFC 1035        Domain Implementation and Specification    November 1987
  5542.  
  5543.  
  5544. client.
  5545.  
  5546. The resolver always starts with a list of server names to query (SLIST).
  5547. This list will be all NS RRs which correspond to the nearest ancestor
  5548. zone that the resolver knows about.  To avoid startup problems, the
  5549. resolver should have a set of default servers which it will ask should
  5550. it have no current NS RRs which are appropriate.  The resolver then adds
  5551. to SLIST all of the known addresses for the name servers, and may start
  5552. parallel requests to acquire the addresses of the servers when the
  5553. resolver has the name, but no addresses, for the name servers.
  5554.  
  5555. To complete initialization of SLIST, the resolver attaches whatever
  5556. history information it has to the each address in SLIST.  This will
  5557. usually consist of some sort of weighted averages for the response time
  5558. of the address, and the batting average of the address (i.e., how often
  5559. the address responded at all to the request).  Note that this
  5560. information should be kept on a per address basis, rather than on a per
  5561. name server basis, because the response time and batting average of a
  5562. particular server may vary considerably from address to address.  Note
  5563. also that this information is actually specific to a resolver address /
  5564. server address pair, so a resolver with multiple addresses may wish to
  5565. keep separate histories for each of its addresses.  Part of this step
  5566. must deal with addresses which have no such history; in this case an
  5567. expected round trip time of 5-10 seconds should be the worst case, with
  5568. lower estimates for the same local network, etc.
  5569.  
  5570. Note that whenever a delegation is followed, the resolver algorithm
  5571. reinitializes SLIST.
  5572.  
  5573. The information establishes a partial ranking of the available name
  5574. server addresses.  Each time an address is chosen and the state should
  5575. be altered to prevent its selection again until all other addresses have
  5576. been tried.  The timeout for each transmission should be 50-100% greater
  5577. than the average predicted value to allow for variance in response.
  5578.  
  5579. Some fine points:
  5580.  
  5581.    - The resolver may encounter a situation where no addresses are
  5582.      available for any of the name servers named in SLIST, and
  5583.      where the servers in the list are precisely those which would
  5584.      normally be used to look up their own addresses.  This
  5585.      situation typically occurs when the glue address RRs have a
  5586.      smaller TTL than the NS RRs marking delegation, or when the
  5587.      resolver caches the result of a NS search.  The resolver
  5588.      should detect this condition and restart the search at the
  5589.      next ancestor zone, or alternatively at the root.
  5590.  
  5591.  
  5592.  
  5593.  
  5594.  
  5595. Mockapetris                                                    [Page 45]
  5596.  
  5597. RFC 1035        Domain Implementation and Specification    November 1987
  5598.  
  5599.  
  5600.    - If a resolver gets a server error or other bizarre response
  5601.      from a name server, it should remove it from SLIST, and may
  5602.      wish to schedule an immediate transmission to the next
  5603.      candidate server address.
  5604.  
  5605. 7.3. Processing responses
  5606.  
  5607. The first step in processing arriving response datagrams is to parse the
  5608. response.  This procedure should include:
  5609.  
  5610.    - Check the header for reasonableness.  Discard datagrams which
  5611.      are queries when responses are expected.
  5612.  
  5613.    - Parse the sections of the message, and insure that all RRs are
  5614.      correctly formatted.
  5615.  
  5616.    - As an optional step, check the TTLs of arriving data looking
  5617.      for RRs with excessively long TTLs.  If a RR has an
  5618.      excessively long TTL, say greater than 1 week, either discard
  5619.      the whole response, or limit all TTLs in the response to 1
  5620.      week.
  5621.  
  5622. The next step is to match the response to a current resolver request.
  5623. The recommended strategy is to do a preliminary matching using the ID
  5624. field in the domain header, and then to verify that the question section
  5625. corresponds to the information currently desired.  This requires that
  5626. the transmission algorithm devote several bits of the domain ID field to
  5627. a request identifier of some sort.  This step has several fine points:
  5628.  
  5629.    - Some name servers send their responses from different
  5630.      addresses than the one used to receive the query.  That is, a
  5631.      resolver cannot rely that a response will come from the same
  5632.      address which it sent the corresponding query to.  This name
  5633.      server bug is typically encountered in UNIX systems.
  5634.  
  5635.    - If the resolver retransmits a particular request to a name
  5636.      server it should be able to use a response from any of the
  5637.      transmissions.  However, if it is using the response to sample
  5638.      the round trip time to access the name server, it must be able
  5639.      to determine which transmission matches the response (and keep
  5640.      transmission times for each outgoing message), or only
  5641.      calculate round trip times based on initial transmissions.
  5642.  
  5643.    - A name server will occasionally not have a current copy of a
  5644.      zone which it should have according to some NS RRs.  The
  5645.      resolver should simply remove the name server from the current
  5646.      SLIST, and continue.
  5647.  
  5648.  
  5649.  
  5650.  
  5651. Mockapetris                                                    [Page 46]
  5652.  
  5653. RFC 1035        Domain Implementation and Specification    November 1987
  5654.  
  5655.  
  5656. 7.4. Using the cache
  5657.  
  5658. In general, we expect a resolver to cache all data which it receives in
  5659. responses since it may be useful in answering future client requests.
  5660. However, there are several types of data which should not be cached:
  5661.  
  5662.    - When several RRs of the same type are available for a
  5663.      particular owner name, the resolver should either cache them
  5664.      all or none at all.  When a response is truncated, and a
  5665.      resolver doesn't know whether it has a complete set, it should
  5666.      not cache a possibly partial set of RRs.
  5667.  
  5668.    - Cached data should never be used in preference to
  5669.      authoritative data, so if caching would cause this to happen
  5670.      the data should not be cached.
  5671.  
  5672.    - The results of an inverse query should not be cached.
  5673.  
  5674.    - The results of standard queries where the QNAME contains "*"
  5675.      labels if the data might be used to construct wildcards.  The
  5676.      reason is that the cache does not necessarily contain existing
  5677.      RRs or zone boundary information which is necessary to
  5678.      restrict the application of the wildcard RRs.
  5679.  
  5680.    - RR data in responses of dubious reliability.  When a resolver
  5681.      receives unsolicited responses or RR data other than that
  5682.      requested, it should discard it without caching it.  The basic
  5683.      implication is that all sanity checks on a packet should be
  5684.      performed before any of it is cached.
  5685.  
  5686. In a similar vein, when a resolver has a set of RRs for some name in a
  5687. response, and wants to cache the RRs, it should check its cache for
  5688. already existing RRs.  Depending on the circumstances, either the data
  5689. in the response or the cache is preferred, but the two should never be
  5690. combined.  If the data in the response is from authoritative data in the
  5691. answer section, it is always preferred.
  5692.  
  5693. 8. MAIL SUPPORT
  5694.  
  5695. The domain system defines a standard for mapping mailboxes into domain
  5696. names, and two methods for using the mailbox information to derive mail
  5697. routing information.  The first method is called mail exchange binding
  5698. and the other method is mailbox binding.  The mailbox encoding standard
  5699. and mail exchange binding are part of the DNS official protocol, and are
  5700. the recommended method for mail routing in the Internet.  Mailbox
  5701. binding is an experimental feature which is still under development and
  5702. subject to change.
  5703.  
  5704.  
  5705.  
  5706.  
  5707. Mockapetris                                                    [Page 47]
  5708.  
  5709. RFC 1035        Domain Implementation and Specification    November 1987
  5710.  
  5711.  
  5712. The mailbox encoding standard assumes a mailbox name of the form
  5713. "<local-part>@<mail-domain>".  While the syntax allowed in each of these
  5714. sections varies substantially between the various mail internets, the
  5715. preferred syntax for the ARPA Internet is given in [RFC-822].
  5716.  
  5717. The DNS encodes the <local-part> as a single label, and encodes the
  5718. <mail-domain> as a domain name.  The single label from the <local-part>
  5719. is prefaced to the domain name from <mail-domain> to form the domain
  5720. name corresponding to the mailbox.  Thus the mailbox HOSTMASTER@SRI-
  5721. NIC.ARPA is mapped into the domain name HOSTMASTER.SRI-NIC.ARPA.  If the
  5722. <local-part> contains dots or other special characters, its
  5723. representation in a master file will require the use of backslash
  5724. quoting to ensure that the domain name is properly encoded.  For
  5725. example, the mailbox Action.domains@ISI.EDU would be represented as
  5726. Action\.domains.ISI.EDU.
  5727.  
  5728. 8.1. Mail exchange binding
  5729.  
  5730. Mail exchange binding uses the <mail-domain> part of a mailbox
  5731. specification to determine where mail should be sent.  The <local-part>
  5732. is not even consulted.  [RFC-974] specifies this method in detail, and
  5733. should be consulted before attempting to use mail exchange support.
  5734.  
  5735. One of the advantages of this method is that it decouples mail
  5736. destination naming from the hosts used to support mail service, at the
  5737. cost of another layer of indirection in the lookup function.  However,
  5738. the addition layer should eliminate the need for complicated "%", "!",
  5739. etc encodings in <local-part>.
  5740.  
  5741. The essence of the method is that the <mail-domain> is used as a domain
  5742. name to locate type MX RRs which list hosts willing to accept mail for
  5743. <mail-domain>, together with preference values which rank the hosts
  5744. according to an order specified by the administrators for <mail-domain>.
  5745.  
  5746. In this memo, the <mail-domain> ISI.EDU is used in examples, together
  5747. with the hosts VENERA.ISI.EDU and VAXA.ISI.EDU as mail exchanges for
  5748. ISI.EDU.  If a mailer had a message for Mockapetris@ISI.EDU, it would
  5749. route it by looking up MX RRs for ISI.EDU.  The MX RRs at ISI.EDU name
  5750. VENERA.ISI.EDU and VAXA.ISI.EDU, and type A queries can find the host
  5751. addresses.
  5752.  
  5753. 8.2. Mailbox binding (Experimental)
  5754.  
  5755. In mailbox binding, the mailer uses the entire mail destination
  5756. specification to construct a domain name.  The encoded domain name for
  5757. the mailbox is used as the QNAME field in a QTYPE=MAILB query.
  5758.  
  5759. Several outcomes are possible for this query:
  5760.  
  5761.  
  5762.  
  5763. Mockapetris                                                    [Page 48]
  5764.  
  5765. RFC 1035        Domain Implementation and Specification    November 1987
  5766.  
  5767.  
  5768.    1. The query can return a name error indicating that the mailbox
  5769.       does not exist as a domain name.
  5770.  
  5771.       In the long term, this would indicate that the specified
  5772.       mailbox doesn't exist.  However, until the use of mailbox
  5773.       binding is universal, this error condition should be
  5774.       interpreted to mean that the organization identified by the
  5775.       global part does not support mailbox binding.  The
  5776.       appropriate procedure is to revert to exchange binding at
  5777.       this point.
  5778.  
  5779.    2. The query can return a Mail Rename (MR) RR.
  5780.  
  5781.       The MR RR carries new mailbox specification in its RDATA
  5782.       field.  The mailer should replace the old mailbox with the
  5783.       new one and retry the operation.
  5784.  
  5785.    3. The query can return a MB RR.
  5786.  
  5787.       The MB RR carries a domain name for a host in its RDATA
  5788.       field.  The mailer should deliver the message to that host
  5789.       via whatever protocol is applicable, e.g., b,SMTP.
  5790.  
  5791.    4. The query can return one or more Mail Group (MG) RRs.
  5792.  
  5793.       This condition means that the mailbox was actually a mailing
  5794.       list or mail group, rather than a single mailbox.  Each MG RR
  5795.       has a RDATA field that identifies a mailbox that is a member
  5796.       of the group.  The mailer should deliver a copy of the
  5797.       message to each member.
  5798.  
  5799.    5. The query can return a MB RR as well as one or more MG RRs.
  5800.  
  5801.       This condition means the the mailbox was actually a mailing
  5802.       list.  The mailer can either deliver the message to the host
  5803.       specified by the MB RR, which will in turn do the delivery to
  5804.       all members, or the mailer can use the MG RRs to do the
  5805.       expansion itself.
  5806.  
  5807. In any of these cases, the response may include a Mail Information
  5808. (MINFO) RR.  This RR is usually associated with a mail group, but is
  5809. legal with a MB.  The MINFO RR identifies two mailboxes.  One of these
  5810. identifies a responsible person for the original mailbox name.  This
  5811. mailbox should be used for requests to be added to a mail group, etc.
  5812. The second mailbox name in the MINFO RR identifies a mailbox that should
  5813. receive error messages for mail failures.  This is particularly
  5814. appropriate for mailing lists when errors in member names should be
  5815. reported to a person other than the one who sends a message to the list.
  5816.  
  5817.  
  5818.  
  5819. Mockapetris                                                    [Page 49]
  5820.  
  5821. RFC 1035        Domain Implementation and Specification    November 1987
  5822.  
  5823.  
  5824. New fields may be added to this RR in the future.
  5825.  
  5826.  
  5827. 9. REFERENCES and BIBLIOGRAPHY
  5828.  
  5829. [Dyer 87]       S. Dyer, F. Hsu, "Hesiod", Project Athena
  5830.                 Technical Plan - Name Service, April 1987, version 1.9.
  5831.  
  5832.                 Describes the fundamentals of the Hesiod name service.
  5833.  
  5834. [IEN-116]       J. Postel, "Internet Name Server", IEN-116,
  5835.                 USC/Information Sciences Institute, August 1979.
  5836.  
  5837.                 A name service obsoleted by the Domain Name System, but
  5838.                 still in use.
  5839.  
  5840. [Quarterman 86] J. Quarterman, and J. Hoskins, "Notable Computer Networks",
  5841.                 Communications of the ACM, October 1986, volume 29, number
  5842.                 10.
  5843.  
  5844. [RFC-742]       K. Harrenstien, "NAME/FINGER", RFC-742, Network
  5845.                 Information Center, SRI International, December 1977.
  5846.  
  5847. [RFC-768]       J. Postel, "User Datagram Protocol", RFC-768,
  5848.                 USC/Information Sciences Institute, August 1980.
  5849.  
  5850. [RFC-793]       J. Postel, "Transmission Control Protocol", RFC-793,
  5851.                 USC/Information Sciences Institute, September 1981.
  5852.  
  5853. [RFC-799]       D. Mills, "Internet Name Domains", RFC-799, COMSAT,
  5854.                 September 1981.
  5855.  
  5856.                 Suggests introduction of a hierarchy in place of a flat
  5857.                 name space for the Internet.
  5858.  
  5859. [RFC-805]       J. Postel, "Computer Mail Meeting Notes", RFC-805,
  5860.                 USC/Information Sciences Institute, February 1982.
  5861.  
  5862. [RFC-810]       E. Feinler, K. Harrenstien, Z. Su, and V. White, "DOD
  5863.                 Internet Host Table Specification", RFC-810, Network
  5864.                 Information Center, SRI International, March 1982.
  5865.  
  5866.                 Obsolete.  See RFC-952.
  5867.  
  5868. [RFC-811]       K. Harrenstien, V. White, and E. Feinler, "Hostnames
  5869.                 Server", RFC-811, Network Information Center, SRI
  5870.                 International, March 1982.
  5871.  
  5872.  
  5873.  
  5874.  
  5875. Mockapetris                                                    [Page 50]
  5876.  
  5877. RFC 1035        Domain Implementation and Specification    November 1987
  5878.  
  5879.  
  5880.                 Obsolete.  See RFC-953.
  5881.  
  5882. [RFC-812]       K. Harrenstien, and V. White, "NICNAME/WHOIS", RFC-812,
  5883.                 Network Information Center, SRI International, March
  5884.                 1982.
  5885.  
  5886. [RFC-819]       Z. Su, and J. Postel, "The Domain Naming Convention for
  5887.                 Internet User Applications", RFC-819, Network
  5888.                 Information Center, SRI International, August 1982.
  5889.  
  5890.                 Early thoughts on the design of the domain system.
  5891.                 Current implementation is completely different.
  5892.  
  5893. [RFC-821]       J. Postel, "Simple Mail Transfer Protocol", RFC-821,
  5894.                 USC/Information Sciences Institute, August 1980.
  5895.  
  5896. [RFC-830]       Z. Su, "A Distributed System for Internet Name Service",
  5897.                 RFC-830, Network Information Center, SRI International,
  5898.                 October 1982.
  5899.  
  5900.                 Early thoughts on the design of the domain system.
  5901.                 Current implementation is completely different.
  5902.  
  5903. [RFC-882]       P. Mockapetris, "Domain names - Concepts and
  5904.                 Facilities," RFC-882, USC/Information Sciences
  5905.                 Institute, November 1983.
  5906.  
  5907.                 Superceeded by this memo.
  5908.  
  5909. [RFC-883]       P. Mockapetris, "Domain names - Implementation and
  5910.                 Specification," RFC-883, USC/Information Sciences
  5911.                 Institute, November 1983.
  5912.  
  5913.                 Superceeded by this memo.
  5914.  
  5915. [RFC-920]       J. Postel and J. Reynolds, "Domain Requirements",
  5916.                 RFC-920, USC/Information Sciences Institute,
  5917.                 October 1984.
  5918.  
  5919.                 Explains the naming scheme for top level domains.
  5920.  
  5921. [RFC-952]       K. Harrenstien, M. Stahl, E. Feinler, "DoD Internet Host
  5922.                 Table Specification", RFC-952, SRI, October 1985.
  5923.  
  5924.                 Specifies the format of HOSTS.TXT, the host/address
  5925.                 table replaced by the DNS.
  5926.  
  5927.  
  5928.  
  5929.  
  5930.  
  5931. Mockapetris                                                    [Page 51]
  5932.  
  5933. RFC 1035        Domain Implementation and Specification    November 1987
  5934.  
  5935.  
  5936. [RFC-953]       K. Harrenstien, M. Stahl, E. Feinler, "HOSTNAME Server",
  5937.                 RFC-953, SRI, October 1985.
  5938.  
  5939.                 This RFC contains the official specification of the
  5940.                 hostname server protocol, which is obsoleted by the DNS.
  5941.                 This TCP based protocol accesses information stored in
  5942.                 the RFC-952 format, and is used to obtain copies of the
  5943.                 host table.
  5944.  
  5945. [RFC-973]       P. Mockapetris, "Domain System Changes and
  5946.                 Observations", RFC-973, USC/Information Sciences
  5947.                 Institute, January 1986.
  5948.  
  5949.                 Describes changes to RFC-882 and RFC-883 and reasons for
  5950.                 them.
  5951.  
  5952. [RFC-974]       C. Partridge, "Mail routing and the domain system",
  5953.                 RFC-974, CSNET CIC BBN Labs, January 1986.
  5954.  
  5955.                 Describes the transition from HOSTS.TXT based mail
  5956.                 addressing to the more powerful MX system used with the
  5957.                 domain system.
  5958.  
  5959. [RFC-1001]      NetBIOS Working Group, "Protocol standard for a NetBIOS
  5960.                 service on a TCP/UDP transport: Concepts and Methods",
  5961.                 RFC-1001, March 1987.
  5962.  
  5963.                 This RFC and RFC-1002 are a preliminary design for
  5964.                 NETBIOS on top of TCP/IP which proposes to base NetBIOS
  5965.                 name service on top of the DNS.
  5966.  
  5967. [RFC-1002]      NetBIOS Working Group, "Protocol standard for a NetBIOS
  5968.                 service on a TCP/UDP transport: Detailed
  5969.                 Specifications", RFC-1002, March 1987.
  5970.  
  5971. [RFC-1010]      J. Reynolds, and J. Postel, "Assigned Numbers", RFC-1010,
  5972.                 USC/Information Sciences Institute, May 1987.
  5973.  
  5974.                 Contains socket numbers and mnemonics for host names,
  5975.                 operating systems, etc.
  5976.  
  5977. [RFC-1031]      W. Lazear, "MILNET Name Domain Transition", RFC-1031,
  5978.                 November 1987.
  5979.  
  5980.                 Describes a plan for converting the MILNET to the DNS.
  5981.  
  5982. [RFC-1032]      M. Stahl, "Establishing a Domain - Guidelines for
  5983.                 Administrators", RFC-1032, November 1987.
  5984.  
  5985.  
  5986.  
  5987. Mockapetris                                                    [Page 52]
  5988.  
  5989. RFC 1035        Domain Implementation and Specification    November 1987
  5990.  
  5991.  
  5992.                 Describes the registration policies used by the NIC to
  5993.                 administer the top level domains and delegate subzones.
  5994.  
  5995. [RFC-1033]      M. Lottor, "Domain Administrators Operations Guide",
  5996.                 RFC-1033, November 1987.
  5997.  
  5998.                 A cookbook for domain administrators.
  5999.  
  6000. [Solomon 82]    M. Solomon, L. Landweber, and D. Neuhengen, "The CSNET
  6001.                 Name Server", Computer Networks, vol 6, nr 3, July 1982.
  6002.  
  6003.                 Describes a name service for CSNET which is independent
  6004.                 from the DNS and DNS use in the CSNET.
  6005.  
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  
  6011.  
  6012.  
  6013.  
  6014.  
  6015.  
  6016.  
  6017.  
  6018.  
  6019.  
  6020.  
  6021.  
  6022.  
  6023.  
  6024.  
  6025.  
  6026.  
  6027.  
  6028.  
  6029.  
  6030.  
  6031.  
  6032.  
  6033.  
  6034.  
  6035.  
  6036.  
  6037.  
  6038.  
  6039.  
  6040.  
  6041.  
  6042.  
  6043. Mockapetris                                                    [Page 53]
  6044.  
  6045. RFC 1035        Domain Implementation and Specification    November 1987
  6046.  
  6047.  
  6048. Index
  6049.  
  6050.           *   13
  6051.  
  6052.           ;   33, 35
  6053.  
  6054.           <character-string>   35
  6055.           <domain-name>   34
  6056.  
  6057.           @   35
  6058.  
  6059.           \   35
  6060.  
  6061.           A   12
  6062.  
  6063.           Byte order   8
  6064.  
  6065.           CH   13
  6066.           Character case   9
  6067.           CLASS   11
  6068.           CNAME   12
  6069.           Completion   42
  6070.           CS   13
  6071.  
  6072.           Hesiod   13
  6073.           HINFO   12
  6074.           HS   13
  6075.  
  6076.           IN   13
  6077.           IN-ADDR.ARPA domain   22
  6078.           Inverse queries   40
  6079.  
  6080.           Mailbox names   47
  6081.           MB   12
  6082.           MD   12
  6083.           MF   12
  6084.           MG   12
  6085.           MINFO   12
  6086.           MINIMUM   20
  6087.           MR   12
  6088.           MX   12
  6089.  
  6090.           NS   12
  6091.           NULL   12
  6092.  
  6093.           Port numbers   32
  6094.           Primary server   5
  6095.           PTR   12, 18
  6096.  
  6097.  
  6098.  
  6099. Mockapetris                                                    [Page 54]
  6100.  
  6101. RFC 1035        Domain Implementation and Specification    November 1987
  6102.  
  6103.  
  6104.           QCLASS   13
  6105.           QTYPE   12
  6106.  
  6107.           RDATA   12
  6108.           RDLENGTH  11
  6109.  
  6110.           Secondary server   5
  6111.           SOA   12
  6112.           Stub resolvers   7
  6113.  
  6114.           TCP   32
  6115.           TXT   12
  6116.           TYPE   11
  6117.  
  6118.           UDP   32
  6119.  
  6120.           WKS   12
  6121.  
  6122.  
  6123.  
  6124.  
  6125.  
  6126.  
  6127.  
  6128.  
  6129.  
  6130.  
  6131.  
  6132.  
  6133.  
  6134.  
  6135.  
  6136.  
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142.  
  6143.  
  6144.  
  6145.  
  6146.  
  6147.  
  6148.  
  6149.  
  6150.  
  6151.  
  6152.  
  6153.  
  6154.  
  6155. Mockapetris                                                    [Page 55]
  6156.  
  6157.